absinthe v1.3.0-beta.1 Absinthe.Type.Interface

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

Summary

Types

t()

Functions

Callback implementation for c:Absinthe.Introspection.Kind.kind/0

Whether the interface (or implementors) are correctly configured to resolve objects

Types

t()
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)}

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.

Functions

build(map)
implements?(interface, type)
kind()

Callback implementation for c:Absinthe.Introspection.Kind.kind/0.

resolve_type(type, obj, env, opts \\ [lookup: true])
type_resolvable?(schema, iface)
type_resolvable?(Absinthe.Schema.t, t) :: boolean

Whether the interface (or implementors) are correctly configured to resolve objects.