Class: GraphQL::InterfaceType

Inherits:
BaseType
  • Object
show all
Includes:
BaseType::HasPossibleTypes
Defined in:
lib/graphql/interface_type.rb

Overview

An Interface contains a collection of types which implement some of the same fields.

Interfaces can have fields, defined with ‘field`, just like an object type.

Objects which implement this field inherit field definitions from the interface. An object type can override the inherited definition by redefining that field.

Examples:

An interface with three fields

DeviceInterface = GraphQL::InterfaceType.define do
  name("Device")
  description("Hardware devices for computing")

  field :ram, types.String
  field :processor, ProcessorType
  field :release_year, types.Int
end

Implementing an interface with an object type

Laptoptype = GraphQL::ObjectType.define do
  interfaces [DeviceInterface]
end

Constant Summary

Constants included from BaseType::HasPossibleTypes

BaseType::HasPossibleTypes::DEFAULT_RESOLVE_TYPE

Instance Attribute Summary

Attributes inherited from BaseType

#description, #name

Instance Method Summary collapse

Methods included from BaseType::HasPossibleTypes

#legacy_resolve_type, #resolve_type, #resolve_type=, #warn_resolve_type_deprecated

Methods inherited from BaseType

#==, #coerce_input, #connection_type, #define_connection, #define_edge, #edge_type, resolve_related_type, #resolve_type, #to_list_type, #to_non_null_type, #to_s, #unwrap, #valid_input?, #validate_input

Methods included from Define::InstanceDefinable

#definition_proc=, included, #metadata

Methods included from Define::NonNullWithBang

#!

Constructor Details

#initializeInterfaceType

Returns a new instance of InterfaceType.



30
31
32
# File 'lib/graphql/interface_type.rb', line 30

def initialize
  @fields = {}
end

Instance Method Details

#all_fieldsArray<GraphQL::Field>

Returns All fields on this type.

Returns:



44
45
46
# File 'lib/graphql/interface_type.rb', line 44

def all_fields
  fields.values
end

#get_field(field_name) ⇒ GraphQL::Field

Returns The defined field for ‘field_name`.

Returns:



39
40
41
# File 'lib/graphql/interface_type.rb', line 39

def get_field(field_name)
  fields[field_name]
end

#kindObject



34
35
36
# File 'lib/graphql/interface_type.rb', line 34

def kind
  GraphQL::TypeKinds::INTERFACE
end