Packages
cqrs_tools
0.5.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/middleware.ex
defmodule Cqrs.Absinthe.Middleware do
@moduledoc false
alias Cqrs.Absinthe.Middleware
alias Cqrs.Absinthe.InvalidMiddlewareFunction
defmacro before_resolve(module, opts) do
quote do
alias Cqrs.Absinthe.Middleware
Middleware.ensure_middelware_function!(unquote(module), unquote(opts), :before_resolve)
middleware fn res, config ->
fun = Middleware.middelware_function(unquote(opts), :before_resolve)
fun.(res, config)
end
end
end
defmacro after_resolve(module, opts) do
quote do
alias Cqrs.Absinthe.Middleware
Middleware.ensure_middelware_function!(unquote(module), unquote(opts), :after_resolve)
middleware fn res, config ->
fun = Middleware.middelware_function(unquote(opts), :after_resolve)
fun.(res, config)
end
end
end
def passthrough(res, _), do: res
def ensure_middelware_function!(module, opts, position) do
case middelware_function(opts, position) do
fun when is_function(fun, 2) -> fun
_ -> raise InvalidMiddlewareFunction, module: module, position: position
end
end
def middelware_function(opts, position) do
Keyword.get(opts, position, &Middleware.passthrough/2)
end
end