View Source OnePiece.Commanded.Event (OnePiece.Commanded v0.19.1)
Defines "Event" modules.
Summary
Types
@type aggregate_identifier_opt() :: atom() | {key_name :: atom(), type :: atom()} | {key_name :: atom(), type :: module()}
The aggregate identifier key of the event.
If it's a tuple, the type must be a module that implements the OnePiece.Commanded.ValueObject
module or Ecto
built-in types
@type t() :: struct()
A struct that represents an event.
Functions
@spec __using__(opts :: [{:aggregate_identifier, aggregate_identifier_opt()}]) :: any()
Converts the module into an t/0
.
Using
Usage
defmodule MyEvent do
use OnePiece.Commanded.Event, aggregate_identifier: :id
embedded_schema do
# ...
end
end
You can also define a custom type as the aggregate identifier:
defmodule IdentityRoleId do
use OnePiece.Commanded.ValueObject
embedded_schema do
field :identity_id, :string
field :role_id, :string
end
end
defmodule IdentityRoleAssigned do
use OnePiece.Commanded.Event,
aggregate_identifier: {:id, IdentityRoleId}
embedded_schema do
# ...
end
end