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"
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.

Link to this section Summary

Types

t()

A defined enum type.

Functions

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

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.

The __private__ and :__reference__ fields are for internal use.

Link to this section Functions

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