class SequelMapper::ManyToOneAssociation

Attributes

foreign_key[R]
key[R]
mapping_name[R]
proxy_factory[R]

Public Class Methods

new(mapping_name:, foreign_key:, key:, proxy_factory:) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 5
def initialize(mapping_name:, foreign_key:, key:, proxy_factory:)
  @mapping_name = mapping_name
  @foreign_key = foreign_key
  @key = key
  @proxy_factory = proxy_factory
end

Public Instance Methods

build_proxy(data_superset:, loader:, record:) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 17
def build_proxy(data_superset:, loader:, record:)
  proxy_factory.call(
    query: build_query(data_superset, record),
    loader: loader,
    preloaded_data: {
      key => foreign_key_value(record),
    },
  )
end
build_query(superset, record) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 33
def build_query(superset, record)
  superset.where(key => foreign_key_value(record))
end
delete(parent_record, collection, &block)
Alias for: dump
dump(parent_record, collection, &block) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 37
def dump(parent_record, collection, &block)
  collection.flat_map { |object|
    block.call(mapping_name, object, _foreign_key_does_not_go_here = {})
      .flat_map { |associated_record|
        foreign_key_pair = {
          foreign_key => associated_record.fetch(key),
        }

        [
          associated_record,
          parent_record.merge(foreign_key_pair),
        ]
      }
  }
end
Also aliased as: delete
eager_superset(superset, associated_dataset) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 27
def eager_superset(superset, associated_dataset)
  Dataset.new(
    superset.where(key => associated_dataset.select(foreign_key)).to_a
  )
end

Private Instance Methods

foreign_key_value(record) click to toggle source
# File lib/sequel_mapper/many_to_one_association.rb, line 56
def foreign_key_value(record)
  record.fetch(foreign_key)
end