Packages
one_piece_commanded
0.2.0
0.26.0
0.25.2
0.25.1
0.25.0
0.24.0
0.23.0
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Extend Commanded package
Current section
Files
Jump to
Current section
Files
lib/one_piece/commanded/command_handler.ex
defmodule OnePiece.Commanded.CommandHandler do
@doc """
Convert the module into a `Commanded.Commands.Handler`.
Use `Commanded.Aggregate.Multi` to generate multiple events from
a single command. This can be useful when you want to emit multiple events
that depend upon the aggregate state being updated.
## Usage
defmodule MyCommandHandler do
use OnePiece.Commanded.CommandHandler
@impl Commanded.Commands.Handler
def handle(account, command) do
account
|> Multi.new()
|> Multi.execute(&withdraw_money(&1, command.amount))
|> Multi.execute(&check_balance/1)
end
defp withdraw_money(account, amount) do
# ...
end
defp check_balance(account, amount) do
# ...
end
end
"""
@spec __using__(opts :: []) :: any()
defmacro __using__(_opts \\ []) do
quote do
@behaviour Commanded.Commands.Handler
alias Commanded.Aggregate.Multi
end
end
end