Class: GraphQL::Schema::TypeReducer

Inherits:
Object
  • Object
show all
Defined in:
lib/graph_ql/schema/type_reducer.rb

Overview

Starting from a given type, discover other types in the system by traversing that type’s fields, possible_types, etc

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, existing_type_hash) ⇒ TypeReducer

Returns a new instance of TypeReducer.



5
6
7
8
9
10
11
12
13
14
# File 'lib/graph_ql/schema/type_reducer.rb', line 5

def initialize(type, existing_type_hash)
  if [GraphQL::TypeKinds::NON_NULL, GraphQL::TypeKinds::LIST].include?(type.kind)
    @result = reduce_type(type.of_type, existing_type_hash)
  elsif existing_type_hash.has_key?(type.name)
    # been here, done that
    @result = existing_type_hash
  else
    @result = find_types(type, existing_type_hash.dup)
  end
end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



4
5
6
# File 'lib/graph_ql/schema/type_reducer.rb', line 4

def result
  @result
end

#typeObject (readonly)

Returns the value of attribute type.



4
5
6
# File 'lib/graph_ql/schema/type_reducer.rb', line 4

def type
  @type
end

Class Method Details

.find_all(types) ⇒ Object

Reduce all of ‘types` and return the combined result



17
18
19
20
21
# File 'lib/graph_ql/schema/type_reducer.rb', line 17

def self.find_all(types)
  types.reduce({}) do |memo, type|
    self.new(type, memo).result
  end
end