6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/graphql/compatibility/execution_specification/counter_schema.rb', line 6
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
|