Sha256: ea77e40d57ab322e2e8cfe4879c2e2e333cb8fa41f3a5e1e4720ec1cc0012201
Contents?: true
Size: 732 Bytes
Versions: 17
Compression:
Stored size: 732 Bytes
Contents
class Graphiti::Sideload::HasMany < Graphiti::Sideload def type :has_many end def load_params(parents, query) query.hash.tap do |hash| hash[:filter] ||= {} hash[:filter].merge!(base_filter(parents)) end end def base_filter(parents) { foreign_key => ids_for_parents(parents).join(',') } end private def child_map(children) children.group_by(&foreign_key) end def children_for(parent, map) pk = parent.send(primary_key) children = map[pk] return children if children keys = map.keys if pk.is_a?(String) && keys[0].is_a?(Integer) pk = pk.to_i elsif pk.is_a?(Integer) && keys[0].is_a?(String) pk = pk.to_s end map[pk] || [] end end
Version data entries
17 entries across 17 versions & 1 rubygems