Sha256: 042d16705f10ab99f7fb1389db8c4ee2ec026368f9c587eb9f8b801ddd2749a3

Contents?: true

Size: 775 Bytes

Versions: 4

Compression:

Stored size: 775 Bytes

Contents

# frozen_string_literal: true

module SolidusGraphqlApi
  class BatchLoader
    # A batch loader for +belongs_to+ associations.
    class BelongsTo < BatchLoader
      def load
        graphql_loader_for(object.send(reflection.foreign_key)) do |object_ids, loader|
          retrieve_records_for(object_ids).each do |record|
            loader.call(record.send(association_primary_key), record)
          end
        end
      end

      private

      def retrieve_records_for(object_ids)
        base_relation.where(association_primary_key => object_ids)
      end

      def association_primary_key
        if reflection.polymorphic?
          association_klass.primary_key
        else
          reflection.association_primary_key
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_graphql_api-0.3.1 lib/solidus_graphql_api/batch_loader/belongs_to.rb
solidus_graphql_api-0.3.0 lib/solidus_graphql_api/batch_loader/belongs_to.rb
solidus_graphql_api-0.2.0 lib/solidus_graphql_api/batch_loader/belongs_to.rb
solidus_graphql_api-0.1.0 lib/solidus_graphql_api/batch_loader/belongs_to.rb