View Source OnePiece.Commanded.Aggregate behaviour (OnePiece.Commanded v0.21.0)
Defines "Aggregate" modules.
Summary
Callbacks
Apply a given event to the aggregate returning the new aggregate state.
Types
Callbacks
Functions
@spec __using__( opts :: OnePiece.Commanded.Entity.using_opts() | [{:identity_prefix, String.t() | nil}] ) :: any()
Convert the module into a Aggregate
behaviour and a t/0
.
It adds an apply/2
callback to the module as a fallback, return the aggregate as it is.
Options
:identifier
- The aggregate identifier key.:identity_prefix
(optional) - The prefix to be used for the identity.
Using
Usage
defmodule Account do
use OnePiece.Commanded.Aggregate, identifier: :name
embedded_schema do
field :description, :string
end
@impl OnePiece.Commanded.Aggregate
def apply(%Account{} = aggregate, %AccountOpened{} = event) do
aggregate
|> Map.put(:name, event.name)
|> Map.put(:description, event.description)
end
end