Commanded v1.0.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{account_number: account_number, initial_balance: initial_balance}) do
    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 type

aggregate()

View Source
aggregate() :: struct()
Link to this type

domain_event()

View Source
domain_event() :: struct()
Link to this type

domain_events()

View Source
domain_events() :: [struct()]

Link to this section Callbacks

Link to this callback

handle(aggregate, command)

View Source
handle(aggregate(), command()) ::
  domain_event() | domain_events() | nil | {:error, reason()}

Apply the given command to the event sourced aggregate.

You must return a list containing the pending events, or nil / [] when no events produced.

You should return {:error, reason} on failure.