class HQ::GraphQL::FieldExtension::PaginatedLoader

Public Instance Methods

resolve(object:, arguments:, **_options) click to toggle source
# File lib/hq/graphql/field_extension/paginated_loader.rb, line 9
def resolve(object:, arguments:, **_options)
  limit       = arguments[:limit]
  offset      = arguments[:offset]
  sort_by     = arguments[:sort_by]
  sort_order  = arguments[:sort_order]
  scope       = field.scope.call(**arguments.except(:limit, :offset, :sort_by, :sort_order)) if field.scope
  loader      = PaginatedAssociationLoader.for(
    klass,
    association,
    internal_association: internal_association,
    scope:                scope,
    limit:                limit,
    offset:               offset,
    sort_by:              sort_by,
    sort_order:           sort_order
  )

  loader.load(object.object)
end

Private Instance Methods

association() click to toggle source
# File lib/hq/graphql/field_extension/paginated_loader.rb, line 31
def association
  options[:association]
end
internal_association() click to toggle source
# File lib/hq/graphql/field_extension/paginated_loader.rb, line 35
def internal_association
  options[:internal_association]
end
klass() click to toggle source
# File lib/hq/graphql/field_extension/paginated_loader.rb, line 39
def klass
  options[:klass]
end