Module: Legion::Extensions::Synapse::Data::Model

Defined in:
lib/legion/extensions/synapse/data/models/synapse.rb,
lib/legion/extensions/synapse/data/models/synapse_signal.rb,
lib/legion/extensions/synapse/data/models/synapse_mutation.rb,
lib/legion/extensions/synapse/data/models/synapse_proposal.rb,
lib/legion/extensions/synapse/data/models/synapse_challenge.rb

Class Method Summary collapse

Class Method Details

.define_synapse_challenge_modelObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/synapse/data/models/synapse_challenge.rb', line 8

def self.define_synapse_challenge_model
  @define_mutex.synchronize do
    return if const_defined?(:SynapseChallenge, false)
    return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)

    db = Sequel::Model.db
    return unless db&.table_exists?(:synapse_challenges)

    klass = Class.new(Sequel::Model(:synapse_challenges)) do
      many_to_one :proposal, class: 'Legion::Extensions::Synapse::Data::Model::SynapseProposal',
                             key:   :proposal_id
    end
    klass.set_primary_key :id
    const_set(:SynapseChallenge, klass)
  end
end

.define_synapse_modelObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/legion/extensions/synapse/data/models/synapse.rb', line 10

def self.define_synapse_model
  @define_mutex.synchronize do
    return if const_defined?(:Synapse, false)
    return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)

    db = Sequel::Model.db
    return unless db&.table_exists?(:synapses)

    klass = Class.new(Sequel::Model(:synapses)) do
      one_to_many :mutations, class: 'Legion::Extensions::Synapse::Data::Model::SynapseMutation',
                              key:   :synapse_id
      one_to_many :signals,   class: 'Legion::Extensions::Synapse::Data::Model::SynapseSignal',
                              key:   :synapse_id
      one_to_many :proposals, class: 'Legion::Extensions::Synapse::Data::Model::SynapseProposal',
                              key:   :synapse_id
    end
    klass.set_primary_key :id
    const_set(:Synapse, klass)
  end
end

.define_synapse_mutation_modelObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/synapse/data/models/synapse_mutation.rb', line 8

def self.define_synapse_mutation_model
  @define_mutex.synchronize do
    return if const_defined?(:SynapseMutation, false)
    return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)

    db = Sequel::Model.db
    return unless db&.table_exists?(:synapse_mutations)

    klass = Class.new(Sequel::Model(:synapse_mutations)) do
      many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
                            key:   :synapse_id
    end
    klass.set_primary_key :id
    const_set(:SynapseMutation, klass)
  end
end

.define_synapse_proposal_modelObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/synapse/data/models/synapse_proposal.rb', line 8

def self.define_synapse_proposal_model
  @define_mutex.synchronize do
    return if const_defined?(:SynapseProposal, false)
    return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)

    db = Sequel::Model.db
    return unless db&.table_exists?(:synapse_proposals)

    klass = Class.new(Sequel::Model(:synapse_proposals)) do
      many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
                            key:   :synapse_id
    end
    klass.set_primary_key :id
    const_set(:SynapseProposal, klass)
  end
end

.define_synapse_signal_modelObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/legion/extensions/synapse/data/models/synapse_signal.rb', line 8

def self.define_synapse_signal_model
  @define_mutex.synchronize do
    return if const_defined?(:SynapseSignal, false)
    return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)

    db = Sequel::Model.db
    return unless db&.table_exists?(:synapse_signals)

    klass = Class.new(Sequel::Model(:synapse_signals)) do
      many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
                            key:   :synapse_id
    end
    klass.set_primary_key :id
    const_set(:SynapseSignal, klass)
  end
end