lib/graphql/relay/connection_resolve.rb in graphql-1.2.6 vs lib/graphql/relay/connection_resolve.rb in graphql-1.3.0
- old
+ new
@@ -1,5 +1,6 @@
+# frozen_string_literal: true
module GraphQL
module Relay
class ConnectionResolve
def initialize(field, underlying_resolve, max_page_size: nil)
@field = field
@@ -7,11 +8,23 @@
@max_page_size = max_page_size
end
def call(obj, args, ctx)
nodes = @underlying_resolve.call(obj, args, ctx)
+ if ctx.schema.lazy?(nodes)
+ @field.prepare_lazy(nodes, args, ctx).then { |resolved_nodes|
+ build_connection(resolved_nodes, args, obj, ctx)
+ }
+ else
+ build_connection(nodes, args, obj, ctx)
+ end
+ end
+
+ private
+
+ def build_connection(nodes, args, parent, ctx)
connection_class = GraphQL::Relay::BaseConnection.connection_for_nodes(nodes)
- connection_class.new(nodes, args, field: @field, max_page_size: @max_page_size, parent: obj)
+ connection_class.new(nodes, args, field: @field, max_page_size: @max_page_size, parent: parent, context: ctx)
end
end
end
end