Packages
cqrs_tools
0.5.21
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/field_mapping.ex
if Code.ensure_loaded?(Absinthe) do
defmodule Cqrs.Absinthe.FieldMapping do
@moduledoc false
require Logger
def reject_parent_mappings(fields, opts) do
field_mappings = Keyword.get(opts, :parent_mappings, []) |> Keyword.keys()
Enum.reject(fields, fn {field, _, _} -> Enum.member?(field_mappings, field) end)
end
def resolve_parent_mappings(attrs, module, parent, args, opts) do
field_mappings = Keyword.get(opts, :parent_mappings, [])
Enum.reduce(field_mappings, attrs, fn
{field_name, resolver_fun}, acc when is_function(resolver_fun, 1) ->
value = resolver_fun.(parent)
Logger.debug("[cqrs_tools] Resolved #{inspect(module)}.#{field_name} from parent: #{inspect(value)}")
Map.put(acc, field_name, value)
{field_name, resolver_fun}, acc when is_function(resolver_fun, 2) ->
value = resolver_fun.(parent, args)
Logger.debug("[cqrs_tools] Resolved #{inspect(module)}.#{field_name} from parent: #{inspect(value)}")
Map.put(acc, field_name, value)
{field_name, _resolver_fun}, acc ->
Logger.warn(
"[cqrs_tools] Invalid Field Mapping for #{inspect(module)}.#{field_name}. Expected a function with an arity of 1 or 2"
)
acc
end)
end
def run_field_transformations(attrs, module, opts) do
field_transformations = Keyword.get(opts, :field_transforms, []) ++ Keyword.get(opts, :filter_transforms, [])
Enum.reduce(field_transformations, attrs, fn
{field_name, transform_fun}, acc when is_function(transform_fun, 1) ->
Map.update(acc, field_name, nil, fn source ->
transformed = transform_fun.(source)
Logger.debug(
"[cqrs_tools] Transformed #{inspect(module)}.#{field_name}: #{inspect(source)} -> #{inspect(transformed)}"
)
transformed
end)
{field_name, _transform_fun}, acc ->
Logger.warn(
"[cqrs_tools] Invalid Field Transformation for #{inspect(module)}.#{field_name}. Expected a function with an arity of 1"
)
acc
end)
end
end
end