Packages
cqrs_tools
0.2.4
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/guards.ex
defmodule Cqrs.Guards do
@moduledoc false
alias Cqrs.{InvalidCommandError, InvalidQueryError, InvalidRouterError}
def ensure_is_struct!(module) do
unless function_exported?(module, :__struct__, 0) do
raise "#{module} should be a valid struct."
end
end
def ensure_is_command!(module) do
_ = module.__info__(:functions)
unless function_exported?(module, :__command__, 0) do
raise InvalidCommandError, command: module
end
end
def ensure_is_query!(module) do
_ = module.__info__(:functions)
unless function_exported?(module, :__query__, 0) do
raise InvalidQueryError, query: module
end
end
def ensure_is_commanded_router!(module) do
_ = module.__info__(:functions)
unless function_exported?(module, :__registered_commands__, 0) do
raise InvalidRouterError, router: module
end
end
def ensure_is_dispatcher!(module) do
_ = module.__info__(:functions)
unless function_exported?(module, :dispatch, 2) do
raise "#{module} is required to export a dispatch/2 function."
end
end
end