Packages
absinthe
1.6.2
1.11.0
1.10.2
1.10.1
1.10.0
1.9.1
1.9.0
1.8.0
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.8
1.6.7
retired
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.6.0-rc.1
1.6.0-rc.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.5.0-rc.5
1.5.0-rc.4
1.5.0-rc.3
1.5.0-rc.2
1.5.0-rc.1
1.5.0-rc.0
1.5.0-beta.2
1.5.0-beta.1
1.5.0-beta.0
1.5.0-alpha.4
1.5.0-alpha.3
1.5.0-alpha.2
1.5.0-alpha.1
1.5.0-alpha.0
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
retired
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.3
1.4.0-rc.2
1.4.0-rc.1
1.4.0-rc.0
1.4.0-beta.5
1.4.0-beta.4
1.4.0-beta.3
1.4.0-beta.2
1.4.0-beta.1
1.3.2
1.3.1
1.3.0
1.3.0-rc.0
1.3.0-beta.2
1.3.0-beta.1
1.3.0-beta.0
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.2.0-beta.0
1.2.0-alpha0
1.2.0-alpha.2
1.2.0-alpha.1
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.2.3
0.2.2
0.2.1
0.1.0
GraphQL for Elixir
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/absinthe/language/input_value_definition.ex
defmodule Absinthe.Language.InputValueDefinition do
@moduledoc false
alias Absinthe.{Blueprint, Language}
@enforce_keys [:name, :type]
defstruct [
:name,
:type,
description: nil,
default_value: nil,
directives: [],
loc: %{line: nil}
]
@type t :: %__MODULE__{
name: String.t(),
description: nil | String.t(),
type: Language.input_t(),
default_value: Language.input_t(),
directives: [Language.Directive.t()],
loc: Language.loc_t()
}
defimpl Blueprint.Draft do
def convert(node, doc) do
%Blueprint.Schema.InputValueDefinition{
name: Macro.underscore(node.name),
description: node.description,
type: Blueprint.Draft.convert(node.type, doc),
identifier: Macro.underscore(node.name) |> String.to_atom(),
default_value: to_term(node.default_value),
default_value_blueprint: Blueprint.Draft.convert(node.default_value, doc),
directives: Blueprint.Draft.convert(node.directives, doc),
source_location: source_location(node)
}
end
defp source_location(%{loc: nil}), do: nil
defp source_location(%{loc: loc}), do: Blueprint.SourceLocation.at(loc)
defp to_term(nil),
do: nil
defp to_term(%Language.EnumValue{value: value}),
do: value |> Macro.underscore() |> String.to_atom()
defp to_term(%Language.ListValue{values: values}),
do: Enum.map(values, &to_term/1)
defp to_term(%Language.NullValue{}),
do: nil
defp to_term(%Language.ObjectValue{fields: fields}),
do: Enum.into(fields, %{}, &{String.to_atom(&1.name), to_term(&1.value)})
defp to_term(%{value: value}),
do: value
end
end