module LB::Persistence::Relation::Joins

Helper for joining relations

Public Instance Methods

join_all(type, base, joins) click to toggle source
# File lib/lb/persistence/relation/joins.rb, line 16
def join_all(type, base, joins)
  joins.each do |relation, on|
    base = base.__send__(type, relation, qualify_on(on))
  end
  base
end
left_join_all(base, joins) click to toggle source
# File lib/lb/persistence/relation/joins.rb, line 12
def left_join_all(base, joins)
  join_all(:left_join, base, joins)
end
left_join_all_qualified(joins) click to toggle source
# File lib/lb/persistence/relation/joins.rb, line 8
def left_join_all_qualified(joins)
  left_join_all(qualified, joins)
end
prefixed(relation, prefix = Dry::Core::Inflector .singularize(relation.schema.name.dataset)) click to toggle source
# File lib/lb/persistence/relation/joins.rb, line 31
def prefixed(relation,
             prefix = Dry::Core::Inflector
               .singularize(relation.schema.name.dataset))
  relation.qualified.prefix(prefix).schema.attributes
end
qualify_on(on) click to toggle source
# File lib/lb/persistence/relation/joins.rb, line 23
def qualify_on(on)
  on.map do |source, target|
    source = source.qualified if source.respond_to?(:qualified)
    target = target.qualified if target.respond_to?(:qualified)
    [source, target]
  end.to_h
end