Sha256: ff04c2ad714428286b97a7178ecb425d7571b742e770b0d9f8135ec1a4914402

Contents?: true

Size: 1.77 KB

Versions: 159

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true
module GraphQL
  module Compatibility
    module ExecutionSpecification
      module CounterSchema
        def self.build(execution_strategy)
          counter_type = nil
          schema = nil

          has_count_interface = GraphQL::InterfaceType.define do
            name "HasCount"
            field :count, types.Int
            field :counter, ->{ has_count_interface }
          end

          counter_type = GraphQL::ObjectType.define do
            name "Counter"
            interfaces [has_count_interface]
            field :count, types.Int, resolve: ->(o,a,c) { schema.metadata[:count] += 1 }
            field :counter, has_count_interface, resolve: ->(o,a,c) { :counter }
          end

          alt_counter_type = GraphQL::ObjectType.define do
            name "AltCounter"
            interfaces [has_count_interface]
            field :count, types.Int, resolve: ->(o,a,c) { schema.metadata[:count] += 1 }
            field :counter, has_count_interface, resolve: ->(o,a,c) { :counter }
          end

          has_counter_interface = GraphQL::InterfaceType.define do
            name "HasCounter"
            field :counter, has_count_interface
          end

          query_type = GraphQL::ObjectType.define do
            name "Query"
            interfaces [has_counter_interface]
            field :counter, has_count_interface, resolve: ->(o,a,c) { :counter }
          end

          schema = GraphQL::Schema.define(
            query: query_type,
            resolve_type: ->(t, o, c) { o == :counter ? counter_type : nil },
            orphan_types: [alt_counter_type, counter_type],
            query_execution_strategy: execution_strategy,
          )
          schema.metadata[:count] = 0
          schema
        end
      end
    end
  end
end

Version data entries

159 entries across 159 versions & 2 rubygems

Version Path
graphql-1.11.12 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.11.11 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.12.25 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.24 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.23 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.22 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.21 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.20 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.19 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.18 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.17 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.16 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.15 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.14 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.13 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql_cody-1.13.0 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.12 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.11 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.10 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.13.9 lib/graphql/compatibility/execution_specification/counter_schema.rb