Class: GraphQL::Schema::TypeReducer

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/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.



8
9
10
11
12
13
14
15
16
# File 'lib/graphql/schema/type_reducer.rb', line 8

def initialize(type, existing_type_hash)
  validate_type(type)
  if type.respond_to?(:name) && existing_type_hash.fetch(type.name, nil).equal?(type)
    @result = existing_type_hash
  else
    @type = type
  end
  @existing_type_hash = existing_type_hash
end

Instance Attribute Details

#existing_type_hashObject (readonly)

Returns the value of attribute existing_type_hash.



6
7
8
# File 'lib/graphql/schema/type_reducer.rb', line 6

def existing_type_hash
  @existing_type_hash
end

#typeObject (readonly)

Returns the value of attribute type.



6
7
8
# File 'lib/graphql/schema/type_reducer.rb', line 6

def type
  @type
end

Class Method Details

.find_all(types) ⇒ Object

Reduce all of ‘types` and return the combined result



23
24
25
26
27
28
# File 'lib/graphql/schema/type_reducer.rb', line 23

def self.find_all(types)
  type_map = GraphQL::Schema::TypeMap.new
  types.reduce(type_map) do |memo, type|
    self.new(type, memo).result
  end
end

Instance Method Details

#resultObject



18
19
20
# File 'lib/graphql/schema/type_reducer.rb', line 18

def result
  @result ||= find_types(type, existing_type_hash)
end