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 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:

  • All fields on this type



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:

  • The defined field for field_name



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