Commanded v1.2.0 Commanded.Commands.Handler behaviour View Source
Defines the behaviour a command handler module must implement to support command dispatch.
Example
An open account handler that delegates to a bank account aggregate:
defmodule OpenAccountHandler do
@behaviour Commanded.Commands.Handler
def handle(%BankAccount{} = aggregate, %OpenAccount{} = command) do
%OpenAccount{account_number: account_number, initial_balance: initial_balance} = command
BankAccount.open_account(aggregate, account_number, initial_balance)
end
end
Link to this section Summary
Callbacks
Apply the given command to the event sourced aggregate.
Link to this section Types
Link to this section Callbacks
Specs
handle(aggregate(), command()) :: domain_event() | [domain_event()] | {:ok, domain_event()} | {:ok, [domain_event()]} | :ok | nil | {:error, reason()}
Apply the given command to the event sourced aggregate.
You must return a single domain event, a list containing the pending events,
or nil
, []
, or :ok
when no events are produced.
You should return {:error, reason}
on failure.