View Source Absinthe.Type.Enum (absinthe v1.7.0)
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"
endThe "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"
endIf 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.
Link to this section Summary
Link to this section Types
Specs
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/1orAbsinthe.Schema.Notation.value/1macro.
The __private__ and :__reference__ fields are for internal use.
Link to this section Functions
Callback implementation for c:Absinthe.Introspection.TypeKind.kind/0.