class GraphQL::Relay::EdgesInstrumentation::EdgesResolve

Public Class Methods

new(edge_class:, resolve:) click to toggle source
# File lib/graphql/relay/edges_instrumentation.rb, line 21
def initialize(edge_class:, resolve:)
  @edge_class = edge_class
  @resolve_proc = resolve
end

Public Instance Methods

call(obj, args, ctx) click to toggle source

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

# 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| @edge_class.new(item, parent) }
  end
end