class SequelMapper::OneToManyAssociation

Attributes

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

Public Class Methods

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

Public Instance Methods

build_proxy(data_superset:, loader:, record:) click to toggle source
# File lib/sequel_mapper/one_to_many_association.rb, line 18
def build_proxy(data_superset:, loader:, record:)
 proxy_factory.call(
    query: build_query(data_superset, record),
    loader: loader,
    mapping_name: mapping_name,
  )
end
build_query(superset, record) click to toggle source
# File lib/sequel_mapper/one_to_many_association.rb, line 45
def build_query(superset, record)
  order.apply(
    superset.where(foreign_key => record.fetch(key))
  )
end
delete(parent_record, collection, &block)
Alias for: dump
dump(parent_record, collection, &block) click to toggle source
# File lib/sequel_mapper/one_to_many_association.rb, line 26
def dump(parent_record, collection, &block)
  foreign_key_pair = {
    foreign_key => parent_record.fetch(key),
  }

  collection.flat_map { |associated_object|
    block.call(mapping_name, associated_object, foreign_key_pair)
  }
end
Also aliased as: delete
eager_superset(superset, associated_dataset) click to toggle source
# File lib/sequel_mapper/one_to_many_association.rb, line 37
def eager_superset(superset, associated_dataset)
  Dataset.new(
    superset.where(
      foreign_key => associated_dataset.select(key)
    ).to_a
  )
end