absinthe v1.4.0-beta.1 Absinthe.Type.Interface View Source
A defined interface type that represent a list of named fields and their arguments.
Fields on an interface have the same rules as fields on an
Absinthe.Type.Object
.
If an Absinthe.Type.Object
lists an interface in its :interfaces
entry, it
it guarantees that it defines the same fields and arguments that the
interface does.
Because sometimes it’s for the interface to determine the implementing type of a resolved object, you must either:
- Provide a
:resolve_type
function on the interface - Provide a
:is_type_of
function on each implementing type
interface :named_entity do
field :name, :string
resolve_type fn
%{age: _}, _ -> :person
%{employee_count: _}, _ -> :business
_, _ -> nil
end
end
object :person do
field :name, :string
field :age, :string
interface :named_entity
end
object :business do
field :name, :string
field :employee_count, :integer
interface :named_entity
end
Link to this section Summary
Types
:name
- The name of the interface type. Should be a TitleCasedbinary
. Set automatically.:description
- A nice description for introspection.:fields
- A map ofAbsinthe.Type.Field
structs. SeeAbsinthe.Schema.Notation.field/1
and:args
- A map ofAbsinthe.Type.Argument
structs. SeeAbsinthe.Schema.Notation.arg/2
.:resolve_type
- A function used to determine the implementing type of a resolved object. See alsoAbsinthe.Type.Object
’s:is_type_of
Functions
Callback implementation for c:Absinthe.Introspection.Kind.kind/0
Whether the interface (or implementors) are correctly configured to resolve objects
Link to this section Types
t() :: %Absinthe.Type.Interface{__private__: Keyword.t, __reference__: Absinthe.Type.Reference.t, description: binary, fields: map, name: binary, resolve_type: (any, Absinthe.Resolution.t -> atom | nil)}
:name
- The name of the interface type. Should be a TitleCasedbinary
. Set automatically.:description
- A nice description for introspection.:fields
- A map ofAbsinthe.Type.Field
structs. SeeAbsinthe.Schema.Notation.field/1
and:args
- A map ofAbsinthe.Type.Argument
structs. SeeAbsinthe.Schema.Notation.arg/2
.:resolve_type
- A function used to determine the implementing type of a resolved object. See alsoAbsinthe.Type.Object
’s:is_type_of
.
The :resolve_type
function will be passed two arguments; the object whose type needs to be identified, and the Absinthe.Execution
struct providing the full execution context.
The __private__
and :__reference__
keys are for internal use.
Link to this section Functions
implements?(Absinthe.Type.Interface.t, Absinthe.Type.Object.t, Absinthe.Type.Schema.t) :: boolean
Callback implementation for c:Absinthe.Introspection.Kind.kind/0
.
type_resolvable?(Absinthe.Schema.t, t) :: boolean
Whether the interface (or implementors) are correctly configured to resolve objects.