Class: GraphQL::InterfaceType
- Inherits:
-
ObjectType
- Object
- ObjectType
- GraphQL::InterfaceType
- Defined in:
- lib/graphql/interface_type.rb
Overview
A collection of types which implement the same fields
Constant Summary collapse
- DEFAULT_RESOLVE_TYPE =
The default implementation of #resolve_type gets ‘object.class.name` and finds a type with the same name
-> (object) { type_name = object.class.name possible_types.find {|t| t.name == type_name} }
Instance Attribute Summary
Attributes inherited from ObjectType
#description, #fields, #interfaces, #name
Instance Method Summary collapse
- #kind ⇒ Object
-
#possible_types ⇒ Array<GraphQL::ObjectType>
Types which declare that they implement this interface.
-
#resolve_type(object) ⇒ GraphQL::ObjectType
Return the implementing type for ‘object`.
- #resolve_type=(new_proc) ⇒ Object
Methods inherited from ObjectType
Methods included from DefinitionHelpers::DefinedByConfig
Methods included from DefinitionHelpers::NonNullWithBang
Instance Method Details
#kind ⇒ Object
23 24 25 |
# File 'lib/graphql/interface_type.rb', line 23 def kind GraphQL::TypeKinds::INTERFACE end |
#possible_types ⇒ Array<GraphQL::ObjectType>
Returns Types which declare that they implement this interface.
28 29 30 |
# File 'lib/graphql/interface_type.rb', line 28 def possible_types @possible_types ||= [] end |
#resolve_type(object) ⇒ GraphQL::ObjectType
Return the implementing type for ‘object`. The default implementation assumes that there’s a type with the same name as ‘object.class.name`. Maybe you’ll need to override this in your own interfaces!
38 39 40 |
# File 'lib/graphql/interface_type.rb', line 38 def resolve_type(object) instance_exec(object, &@resolve_type_proc) end |
#resolve_type=(new_proc) ⇒ Object
42 43 44 |
# File 'lib/graphql/interface_type.rb', line 42 def resolve_type=(new_proc) @resolve_type_proc = new_proc || DEFAULT_RESOLVE_TYPE end |