View Source Absinthe.Type.Enum (absinthe v1.7.8)
Used to define an enum type, a special scalar that can only have a defined set of values.
See the t
type below for details and examples.
Examples
Given a type defined as the following (see Absinthe.Schema.Notation
):
@desc "The selected color channel"
enum :color_channel do
value :red, as: :r, description: "Color Red"
value :green, as: :g, description: "Color Green"
value :blue, as: :b, description: "Color Blue"
value :alpha, as: :a, deprecate: "We no longer support opacity settings", description: "Alpha Channel"
end
The "ColorChannel" type (referred inside Absinthe as :color_channel
) is an
Enum type, with values with names "red", "green", "blue", and "alpha" that map
to internal, raw values :r
, :g
, :b
, and :a
. The alpha color channel
is deprecated, just as fields and arguments can be.
You can omit the raw value
if you'd like it to be the same as the
identifier. For instance, in this example the value
is automatically set to
:red
:
enum :color_channel do
description "The selected color channel"
value :red, description: "Color Red"
value :green, description: "Color Green"
value :blue, description: "Color Blue"
value :alpha, deprecate: "We no longer support opacity settings", description: "Alpha Channel"
end
If you really want to use a shorthand, skipping support for descriptions, custom raw values, and deprecation, you can just provide a list of atoms:
enum :color_channel, values: [:red, :green, :blue, :alpha]
Keep in mind that writing a terse definition that skips descriptions and deprecations today may hamper tooling that relies on introspection tomorrow.
Summary
Types
@type t() :: %Absinthe.Type.Enum{ __private__: Keyword.t(), __reference__: Absinthe.Type.Reference.t(), definition: module(), description: binary(), identifier: atom(), name: binary(), values: %{required(binary()) => Absinthe.Type.Enum.Value.t()}, values_by_internal_value: term(), values_by_name: term() }
A defined enum type.
Should be defined using Absinthe.Schema.Notation.enum/2
.
:name
- The name of the enum type. Should be a TitleCasedbinary
. Set automatically.:description
- A nice description for introspection.:values
- The enum values, usually provided using theAbsinthe.Schema.Notation.values/1
orAbsinthe.Schema.Notation.value/1
macro.
The __private__
and :__reference__
fields are for internal use.
Functions
Callback implementation for c:Absinthe.Introspection.TypeKind.kind/0
.