Sha256: 30d2b88aaf831df6d2e9b31c043b14e5333777281de9cc2de2c175fc8786ee38

Contents?: true

Size: 1.29 KB

Versions: 105

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Relay
    class ConnectionResolve
      def initialize(field, underlying_resolve)
        @field = field
        @underlying_resolve = underlying_resolve
        @max_page_size = field.connection_max_page_size
      end

      def call(obj, args, ctx)
        # in a lazy resolve hook, obj is the promise,
        # get the object that the promise was
        # originally derived from
        parent = ctx.object

        nodes = @underlying_resolve.call(obj, args, ctx)

        if nodes.nil? || ctx.schema.lazy?(nodes) || nodes.is_a?(GraphQL::Execution::Execute::Skip) || ctx.wrapped_connection
          nodes
        else
          ctx.wrapped_connection = true
          build_connection(nodes, args, parent, ctx)
        end
      end

      private

      def build_connection(nodes, args, parent, ctx)
        if nodes.is_a? GraphQL::ExecutionError
          ctx.add_error(nodes)
          nil
        else
          if parent.is_a?(GraphQL::Schema::Object)
            parent = parent.object
          end
          connection_class = GraphQL::Relay::BaseConnection.connection_for_nodes(nodes)
          connection_class.new(nodes, args, field: @field, max_page_size: @max_page_size, parent: parent, context: ctx)
        end
      end
    end
  end
end

Version data entries

105 entries across 105 versions & 2 rubygems

Version Path
graphql-1.9.18 lib/graphql/relay/connection_resolve.rb
graphql-1.10.0.pre3 lib/graphql/relay/connection_resolve.rb
graphql-1.9.17 lib/graphql/relay/connection_resolve.rb
graphql-1.10.0.pre2 lib/graphql/relay/connection_resolve.rb
graphql-1.9.16 lib/graphql/relay/connection_resolve.rb
graphql-1.9.15 lib/graphql/relay/connection_resolve.rb
graphql-1.9.14 lib/graphql/relay/connection_resolve.rb
graphql-1.10.0.pre1 lib/graphql/relay/connection_resolve.rb
graphql-1.9.13 lib/graphql/relay/connection_resolve.rb
graphql-1.9.12 lib/graphql/relay/connection_resolve.rb
graphql-1.9.11 lib/graphql/relay/connection_resolve.rb
graphql-1.9.10 lib/graphql/relay/connection_resolve.rb
graphql-1.9.9 lib/graphql/relay/connection_resolve.rb
graphql-1.9.8 lib/graphql/relay/connection_resolve.rb
graphql-1.9.7 lib/graphql/relay/connection_resolve.rb
graphql-1.9.6 lib/graphql/relay/connection_resolve.rb
graphql-1.9.5 lib/graphql/relay/connection_resolve.rb
graphql-1.9.4 lib/graphql/relay/connection_resolve.rb
graphql-1.9.3 lib/graphql/relay/connection_resolve.rb
graphql-1.9.2 lib/graphql/relay/connection_resolve.rb