Packages
cqrs_tools
0.4.13
0.5.28
0.5.27
0.5.26
0.5.25
0.5.24
0.5.23
0.5.22
0.5.21
0.5.20
0.5.19
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.30
0.2.29
0.2.28
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.1
0.1.0
A collection of handy Elixir macros for CQRS applications.
Current section
Files
Jump to
Current section
Files
lib/cqrs/absinthe/enum.ex
if Code.ensure_loaded?(Absinthe) do
defmodule Cqrs.Absinthe.Enum do
@moduledoc false
alias Cqrs.Absinthe.InvalidEnumError
def create_enum(enum_name, source_module, field_name) do
values =
case find_enum_values(source_module, field_name) do
nil ->
raise InvalidEnumError, module: source_module, field: field_name
values ->
Enum.map(values, fn enum_value -> quote do: value(unquote(enum_value)) end)
end
quote do
enum unquote(enum_name) do
(unquote_splicing(values))
end
end
end
defp find_enum_values(module, field_name) do
case module.__schema__(:type, field_name) do
{:parameterized, Ecto.Enum, opts} -> Map.get(opts, :values)
{:array, {:parameterized, Ecto.Enum, opts}} -> Map.get(opts, :values)
_ -> nil
end
end
end
end