Sha256: f7a771f579b9d7e633217c2215e5171db11090033913d6ed3a4b285cc4cd6391

Contents?: true

Size: 730 Bytes

Versions: 33

Compression:

Stored size: 730 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

33 entries across 33 versions & 1 rubygems

Version Path
graphiti-1.2.19 lib/graphiti/sideload/has_many.rb
graphiti-1.2.18 lib/graphiti/sideload/has_many.rb
graphiti-1.2.17 lib/graphiti/sideload/has_many.rb
graphiti-1.2.16 lib/graphiti/sideload/has_many.rb
graphiti-1.2.15 lib/graphiti/sideload/has_many.rb
graphiti-1.2.14 lib/graphiti/sideload/has_many.rb
graphiti-1.2.13 lib/graphiti/sideload/has_many.rb
graphiti-1.2.12 lib/graphiti/sideload/has_many.rb
graphiti-1.2.11 lib/graphiti/sideload/has_many.rb
graphiti-1.2.10 lib/graphiti/sideload/has_many.rb
graphiti-1.2.9 lib/graphiti/sideload/has_many.rb
graphiti-1.2.8 lib/graphiti/sideload/has_many.rb
graphiti-1.2.7 lib/graphiti/sideload/has_many.rb
graphiti-1.2.6 lib/graphiti/sideload/has_many.rb
graphiti-1.2.5 lib/graphiti/sideload/has_many.rb
graphiti-1.2.4 lib/graphiti/sideload/has_many.rb
graphiti-1.2.3 lib/graphiti/sideload/has_many.rb
graphiti-1.2.2 lib/graphiti/sideload/has_many.rb
graphiti-1.2.1 lib/graphiti/sideload/has_many.rb
graphiti-1.2.0 lib/graphiti/sideload/has_many.rb