Method: GraphQL::Schema#get_field

Defined in:
lib/graphql/schema.rb

#get_field(parent_type, field_name) ⇒ GraphQL::Field?

Resolve field named field_name for type parent_type. Handles dynamic fields __typename, __type and __schema, too

Parameters:

Returns:

See Also:

  • Restricted access to members of a schema


309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
# File 'lib/graphql/schema.rb', line 309

def get_field(parent_type, field_name)
  with_definition_error_check do
    parent_type_name = case parent_type
    when GraphQL::BaseType
      parent_type.name
    when String
      parent_type
    else
      raise "Unexpected parent_type: #{parent_type}"
    end

    defined_field = @instrumented_field_map[parent_type_name][field_name]
    if defined_field
      defined_field
    elsif field_name == "__typename"
      GraphQL::Introspection::TypenameField
    elsif field_name == "__schema" && parent_type == query
      GraphQL::Introspection::SchemaField
    elsif field_name == "__type" && parent_type == query
      GraphQL::Introspection::TypeByNameField
    else
      nil
    end
  end
end