Sha256: 70bc5b844773d8830ba6294740cbfa31a5e0dfb653c2c3832aa1674fcdd39462

Contents?: true

Size: 1.13 KB

Versions: 25

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Relay
    module EdgesInstrumentation
      def self.instrument(type, field)
        if field.edges?
          edges_resolve = EdgesResolve.new(edge_class: field.edge_class, resolve: field.resolve_proc)
          edges_lazy_resolve = EdgesResolve.new(edge_class: field.edge_class, resolve: field.lazy_resolve_proc)

          field.redefine(
            resolve: edges_resolve,
            lazy_resolve: edges_lazy_resolve,
          )
        else
          field
        end
      end

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

        # A user's custom Connection may return a lazy object,
        # if so, handle it later.
        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
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
graphql-1.13.23 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.22 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.21 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.20 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.19 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.18 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.17 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.16 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.15 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.14 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.13 lib/graphql/relay/edges_instrumentation.rb
graphql_cody-1.13.0 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.12 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.11 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.10 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.9 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.8 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.7 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.6 lib/graphql/relay/edges_instrumentation.rb
graphql-1.13.5 lib/graphql/relay/edges_instrumentation.rb