absinthe v1.2.0-alpha0 Absinthe.Type.Union
A unions is an abstract type made up of multiple possible concrete types.
No common fields are declared in a union. Compare to Absinthe.Type.Interface.
Because it’s necessary for the union to determine the concrete type of a resolved object, you must either:
- Provide a
:resolve_typefunction on the union - Provide a
:is_type_offunction on each possible concrete type
union :search_result do
description "A search result"
types [:person, :business]
resolve_type fn
%Person{}, _ -> :person
%Business{}, _ -> :business
end
end
:name- The name of the union type. Should be a TitleCasedbinary. Set automatically.:description- A nice description for introspection.:types- The list of possible types.:resolve_type- A function used to determine the concrete type of a resolved object. See alsoAbsinthe.Type.Object’s:is_type_of. Eitherresolve_typeis specified in the union type, or every object type in the union must specifyis_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 :__reference__ key is for internal use.
Summary
Types
t :: %{name: binary, description: binary, types: [Absinthe.Type.identifier_t], resolve_type: (any, Absinthe.Execution.t -> atom | nil), __reference__: Absinthe.Type.Reference.t}