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