defmodule Commanded.Commands.ExecutionResult do
@moduledoc """
Contains the aggregate, events, and metadata created by a successfully
executed command.
The available fields are:
- `aggregate_uuid` - identity of the aggregate instance.
- `aggregate_state` - resultant state of the aggregate after executing
the command.
- `aggregate_version` - resultant version of the aggregate after executing
the command.
- `events` - a list of the created events, it may be an empty list.
- `metadata` - an map containing the metadata associated with the command
dispatch.
"""
@type t :: %__MODULE__{
aggregate_uuid: String.t(),
aggregate_state: struct,
aggregate_version: non_neg_integer(),
events: list(struct()),
metadata: struct()
}
@enforce_keys [:aggregate_uuid, :aggregate_state, :aggregate_version, :events, :metadata]
defstruct [
:aggregate_uuid,
:aggregate_state,
:aggregate_version,
:events,
:metadata
]
end