class Insights::API::Common::GraphQL::AssociationLoader

Attributes

args[R]
association_name[R]
graphql_options[R]
model[R]

Public Class Methods

new(model, association_name, args = {}, graphql_options = {}) click to toggle source
# File lib/insights/api/common/graphql/association_loader.rb, line 8
def initialize(model, association_name, args = {}, graphql_options = {})
  @model            = model
  @association_name = association_name
  @args             = args
  @graphql_options  = graphql_options
end

Public Instance Methods

cache_key(record) click to toggle source
# File lib/insights/api/common/graphql/association_loader.rb, line 15
def cache_key(record)
  record.object_id
end
perform(records) click to toggle source
# File lib/insights/api/common/graphql/association_loader.rb, line 19
def perform(records)
  records.each { |record| fulfill(record, read_association(record)) }
end

Private Instance Methods

read_association(record) click to toggle source
# File lib/insights/api/common/graphql/association_loader.rb, line 25
def read_association(record)
  recs = GraphQL::AssociatedRecords.new(record.public_send(association_name))
  recs = GraphQL.search_options(recs, args)
  if graphql_options[:use_pagination_v2] == true
    PaginatedResponseV2.new(
      :base_query => recs, :request => nil, :limit => args[:limit], :offset => args[:offset]
    ).records
  else
    PaginatedResponse.new(
      :base_query => recs, :request => nil, :limit => args[:limit], :offset => args[:offset]
    ).records
  end
end