Packages
one_piece_commanded
0.15.2
0.26.0
0.25.2
0.25.1
0.25.0
0.24.0
0.23.0
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Extend Commanded package
Current section
Files
Jump to
Current section
Files
lib/one_piece/commanded/event.ex
defmodule OnePiece.Commanded.Event do
@moduledoc """
Defines "Event" modules.
"""
@type t :: struct()
@doc """
Converts the module into an `Ecto.Schema`.
It derives from `Jason.Encoder`.
## Usage
defmodule MyEvent do
use OnePiece.Commanded.Event, aggregate_identifier: :id
embedded_schema do
# ...
end
end
"""
@spec __using__(opts :: [aggregate_identifier: atom()]) :: any()
defmacro __using__(opts \\ []) do
unless Keyword.has_key?(opts, :aggregate_identifier) do
raise ArgumentError, "missing :aggregate_identifier key"
end
aggregate_identifier = Keyword.fetch!(opts, :aggregate_identifier)
quote do
use OnePiece.Commanded.ValueObject
@typedoc """
The key used to identify the aggregate.
"""
@type aggregate_identifier_key :: unquote(aggregate_identifier)
@primary_key {unquote(aggregate_identifier), :string, autogenerate: false}
@doc """
Returns the aggregate identifier key.
"""
@spec aggregate_identifier :: aggregate_identifier_key()
def aggregate_identifier do
unquote(aggregate_identifier)
end
end
end
end