View Source OnePiece.Commanded.Aggregate behaviour (OnePiece.Commanded v0.19.1)
Defines "Aggregate" modules.
Summary
Callbacks
Apply a given event to the aggregate returning the new aggregate state.
Types
Callbacks
Apply a given event to the aggregate returning the new aggregate state.
Example
def apply(%MyAggregate{} = aggregate, %MyEvent{} = event) do
aggregate
|> Map.put(:name, event.name)
|> Map.put(:description, event.description)
end
Functions
@spec __using__(opts :: []) :: 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.
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