class GraphQL::SharedArguments::Injector

Attributes

filter_fields[R]
filter_type[R]
new_arguments[R]
object_fields[R]
selected_fields[R]

Public Class Methods

new(object_definition, filter, new_arguments) click to toggle source
# 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

Public Instance Methods

except() click to toggle source
# File lib/graphql/shared_arguments/injector.rb, line 15
def except
  object_fields.reject { |k, _v| filter_fields.include?(k.to_sym) }
end
inject() click to toggle source
# 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
only() click to toggle source
# File lib/graphql/shared_arguments/injector.rb, line 11
def only
  object_fields.select { |k, _v| filter_fields.include?(k.to_sym) }
end