Class: GraphQL::InterfaceType

Inherits:
BaseType
  • Object
show all
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

Instance Attribute Summary collapse

Attributes inherited from BaseType

#default_relay, #default_scalar, #description, #introspection, #name

Instance Method Summary collapse

Methods inherited from BaseType

#==, #coerce_input, #coerce_isolated_input, #coerce_isolated_result, #coerce_result, #connection_type, #default_relay?, #default_scalar?, #define_connection, #define_edge, #edge_type, #introspection?, #list?, #non_null?, resolve_related_type, #to_definition, #to_list_type, #to_non_null_type, #to_s, #unwrap, #valid_input?, #valid_isolated_input?, #validate_input, #validate_isolated_input

Methods included from Define::InstanceDefinable

#define, included, #metadata, #redefine

Methods included from Define::NonNullWithBang

#!

Constructor Details

#initializeInterfaceType

Returns a new instance of InterfaceType.


31
32
33
34
35
# File 'lib/graphql/interface_type.rb', line 31

def initialize
  super
  @fields = {}
  @resolve_type_proc = nil
end

Instance Attribute Details

#fieldsObject

Returns the value of attribute fields


28
29
30
# File 'lib/graphql/interface_type.rb', line 28

def fields
  @fields
end

#resolve_type_procObject

Returns the value of attribute resolve_type_proc


28
29
30
# File 'lib/graphql/interface_type.rb', line 28

def resolve_type_proc
  @resolve_type_proc
end

Instance Method Details

#all_fieldsArray<GraphQL::Field>

These fields don't have instrumenation applied

Returns:

See Also:

  • Get fields with instrumentation

62
63
64
# File 'lib/graphql/interface_type.rb', line 62

def all_fields
  fields.values
end

#get_field(field_name) ⇒ GraphQL::Field

Returns The defined field for `field_name`.

Returns:


55
56
57
# File 'lib/graphql/interface_type.rb', line 55

def get_field(field_name)
  fields[field_name]
end

#initialize_copy(other) ⇒ Object


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

def initialize_copy(other)
  super
  @fields = other.fields.dup
end

#kindObject


42
43
44
# File 'lib/graphql/interface_type.rb', line 42

def kind
  GraphQL::TypeKinds::INTERFACE
end

#resolve_type(value, ctx) ⇒ Object


46
47
48
# File 'lib/graphql/interface_type.rb', line 46

def resolve_type(value, ctx)
  ctx.query.resolve_type(self, value)
end

#resolve_type=(resolve_type_callable) ⇒ Object


50
51
52
# File 'lib/graphql/interface_type.rb', line 50

def resolve_type=(resolve_type_callable)
  @resolve_type_proc = resolve_type_callable
end