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