Method: GraphQL::Schema::Loader.build_arguments

Defined in:
lib/graphql/schema/loader.rb

.build_arguments(arg_owner, args, type_resolver) ⇒ Object



197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/graphql/schema/loader.rb', line 197

def build_arguments(arg_owner, args, type_resolver)
  args.each do |arg|
    kwargs = {
      type: type_resolver.call(arg["type"]),
      description: arg["description"],
      deprecation_reason: arg["deprecationReason"],
      required: false,
      camelize: false,
    }

    if arg["defaultValue"]
      default_value_str = arg["defaultValue"]

      dummy_query_str = "query getStuff($var: InputObj = #{default_value_str}) { __typename }"

      # Returns a `GraphQL::Language::Nodes::Document`:
      dummy_query_ast = GraphQL.parse(dummy_query_str)

      # Reach into the AST for the default value:
      input_value_ast = dummy_query_ast.definitions.first.variables.first.default_value

      kwargs[:default_value] = extract_default_value(default_value_str, input_value_ast)
    end

    arg_owner.argument(arg["name"], **kwargs)
  end
end