Class: GraphQL::SharedArguments::Injector

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/shared_arguments/injector.rb

Instance Method Summary collapse

Constructor Details

#initialize(object_definition, filter, new_arguments) ⇒ Injector

Returns a new instance of Injector.



4
5
6
7
8
9
# File 'lib/graphql/shared_arguments/injector.rb', line 4

def initialize(object_definition, filter, new_arguments)
  @object_fields = object_definition.fields
  @filter_type = filter.keys.first
  @filter_fields = filter.values.first
  @new_arguments = new_arguments
end

Instance Method Details

#exceptObject



15
16
17
# File 'lib/graphql/shared_arguments/injector.rb', line 15

def except
  object_fields.reject { |k, _v| filter_fields.include?(k.to_sym) }
end

#injectObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/graphql/shared_arguments/injector.rb', line 19

def inject
  @selected_fields = object_fields if filter_fields.nil? && filter_type.nil?
  @selected_fields ||= send(filter_type)

  selected_fields.transform_values do |field|
    field.arguments.merge!(new_arguments)
  end

  object_fields.merge!(selected_fields)
end

#onlyObject



11
12
13
# File 'lib/graphql/shared_arguments/injector.rb', line 11

def only
  object_fields.select { |k, _v| filter_fields.include?(k.to_sym) }
end