Class: GraphQL::Execution::InputValues

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/execution/input_values.rb

Instance Method Summary collapse

Constructor Details

#initialize(query, runner) ⇒ InputValues

Returns a new instance of InputValues.



5
6
7
8
9
# File 'lib/graphql/execution/input_values.rb', line 5

def initialize(query, runner)
  @query = query
  @runner = runner
  @variable_values = nil
end

Instance Method Details

#argument_values(owner_defn, argument_nodes, field_resolve_step) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/graphql/execution/input_values.rb', line 38

def argument_values(owner_defn, argument_nodes, field_resolve_step)
  arg_defns = @query.types.arguments(owner_defn)
  argument_values = {}

  arg_defns.each do |argument_definition|
    arg_ruby_key = argument_definition.keyword
    arg_graphql_key = argument_definition.graphql_name
    arg_node = argument_nodes.find { |a| a.name == arg_graphql_key }
    if arg_node.nil? || (arg_node.value.is_a?(Language::Nodes::VariableIdentifier) && !variable_values.key?(arg_node.value.name))
      if argument_definition.default_value?
        arg_value = value_from_ast(argument_definition.default_value, argument_definition.type)
        argument_value(argument_values, arg_ruby_key, argument_definition, arg_value, nil, field_resolve_step)
      end
    else
      arg_value = value_from_ast(arg_node.value, argument_definition.type)
      argument_value(argument_values, arg_ruby_key, argument_definition, arg_value, nil, field_resolve_step)
    end
  end

  argument_values
rescue GraphQL::ExecutionError => exec_err
  exec_err
end

#variable_valuesObject



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
# File 'lib/graphql/execution/input_values.rb', line 11

def variable_values
  @variable_values ||= begin
    variable_nodes = @query.selected_operation.variables
    if variable_nodes.empty?
      EmptyObjects::EMPTY_HASH
    else
      raw_values = @query.provided_variables
      values = {}
      variable_nodes.each do |var_node|
        var_ast_value = if raw_values.key?(var_node.name)
          raw_values[var_node.name]
        elsif raw_values.key?(sym_name = var_node.name.to_sym)
          raw_values[sym_name]
        elsif !var_node.default_value.nil?
          var_node.default_value
        else
          next
        end

        var_type = @runner.schema.type_from_ast(var_node.type, context: @query.context)
        values[var_node.name] = variable_value(var_ast_value, var_type)
      end
      values
    end
  end
end