Class: GraphQL::Relay::EdgesInstrumentation::EdgesResolve

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/relay/edges_instrumentation.rb

Instance Method Summary collapse

Constructor Details

#initialize(edge_class:, resolve:) ⇒ EdgesResolve

Returns a new instance of EdgesResolve.


21
22
23
24
# File 'lib/graphql/relay/edges_instrumentation.rb', line 21

def initialize(edge_class:, resolve:)
  @edge_class = edge_class
  @resolve_proc = resolve
end

Instance Method Details

#call(obj, args, ctx) ⇒ Object

A user's custom Connection may return a lazy object, if so, handle it later.


28
29
30
31
32
33
34
35
36
# File 'lib/graphql/relay/edges_instrumentation.rb', line 28

def call(obj, args, ctx)
  parent = ctx.object
  nodes = @resolve_proc.call(obj, args, ctx)
  if ctx.schema.lazy?(nodes)
    nodes
  else
    nodes.map { |item| item.is_a?(GraphQL::Pagination::Connection::Edge) ? item : @edge_class.new(item, parent) }
  end
end