Packages
cqrs_tools
0.5.12
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/errors.ex
if Code.ensure_loaded?(Absinthe) do
defmodule Cqrs.Absinthe.InvalidEnumError do
defexception [:module, :field]
def message(%{module: module, field: field}) do
"The field '#{inspect(module)}.#{field}' is not an enum."
end
end
defmodule Cqrs.Absinthe.InvalidSourceError do
defexception [:module]
def message(%{module: module}),
do: "#{inspect(module)} is not a Cqrs.Query, Cqrs.Command, or an Ecto.Schema"
end
defmodule Cqrs.Absinthe.InvalidMiddlewareFunction do
defexception [:module, :position]
def message(%{module: module, position: position}) do
"#{inspect(module)} #{position} function should arity 2"
end
end
defmodule Cqrs.Absinthe.MapTypeMappingError do
defexception [:source, :macro, :type]
def message(%{source: source, macro: macro, type: type}) do
example = """
#{macro} #{source}, :return_type,
as: :query_name,
arg_types: [#{IO.ANSI.format([:red, to_string(type), ": :existing_absinthe_type"])}]
"""
"""
Missing absinthe type for the type #{source}.#{type}.
Example:
#{IO.ANSI.format([:blue, example])}
"""
end
end
defmodule Cqrs.Absinthe.EnumTypeMappingError do
defexception [:source, :macro, :type]
def message(%{source: source, macro: macro, type: type}) do
example = """
#{macro} #{source}, :return_type,
as: :query_name,
arg_types: [#{IO.ANSI.format([:red, to_string(type), ": :existing_absinthe_enum_type"])}]
"""
"""
Missing absinthe enum type for the type #{source}.#{type}.
Example:
#{IO.ANSI.format([:blue, example])}
"""
end
end
defmodule Cqrs.Absinthe.Errors do
@moduledoc false
def attach_error_handler(opts) do
{provided_then, opts} = Keyword.pop(opts, :then, &Function.identity/1)
Keyword.put(opts, :then, &handle_errors(&1, provided_then))
end
def handle_errors({:error, {:invalid_command, errors}}, _) do
errors =
Enum.flat_map(errors, fn
{key, messages} -> Enum.map(messages, fn msg -> "#{key} #{msg}" end)
end)
{:error, errors}
end
def handle_errors(other, then) when is_function(then, 1) do
then.(other)
end
end
end