Class: ActiveShopifyGraphQL::Connections::ConnectionLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/active_shopify_graphql/connections/connection_loader.rb

Overview

Handles loading records for GraphQL connections. Refactored to use LoaderContext for cleaner parameter passing.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context, loader_instance:) ⇒ ConnectionLoader

Returns a new instance of ConnectionLoader.



10
11
12
13
# File 'lib/active_shopify_graphql/connections/connection_loader.rb', line 10

def initialize(context, loader_instance:)
  @context = context
  @loader_instance = loader_instance
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



8
9
10
# File 'lib/active_shopify_graphql/connections/connection_loader.rb', line 8

def context
  @context
end

Instance Method Details

#load_records(query_name, variables, parent = nil, connection_config = nil) ⇒ Array<Object>

Load records for a connection query

Parameters:

  • query_name (String)

    The connection field name (e.g., 'orders', 'addresses')

  • variables (Hash)

    The GraphQL variables (first, sort_key, reverse, query)

  • parent (Object) (defaults to: nil)

    The parent object that owns this connection

  • connection_config (Hash) (defaults to: nil)

    The connection configuration

Returns:

  • (Array<Object>)

    Array of model instances



21
22
23
24
25
26
27
28
29
# File 'lib/active_shopify_graphql/connections/connection_loader.rb', line 21

def load_records(query_name, variables, parent = nil, connection_config = nil)
  is_nested = connection_config&.dig(:nested) || parent.respond_to?(:id)

  if is_nested && parent
    load_nested_connection(query_name, variables, parent, connection_config)
  else
    load_root_connection(query_name, variables, connection_config)
  end
end