Sha256: 123173c206a964aa013835143ec24c08893779d10a9ba663a8328da23e02a895

Contents?: true

Size: 1.77 KB

Versions: 19

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: ->(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

19 entries across 19 versions & 1 rubygems

Version Path
graphql-1.6.4 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.15 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.6.3 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.6.2 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.6.1 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.6.0 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.14 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.13 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.7.1 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.12 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.11 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.10 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.9 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.8 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.7 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.6 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.5 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.4 lib/graphql/compatibility/execution_specification/counter_schema.rb
graphql-1.5.3 lib/graphql/compatibility/execution_specification/counter_schema.rb