View Source OnePiece.Commanded.Command (OnePiece.Commanded v0.19.1)

Defines "Command" modules.

Summary

Types

The aggregate identifier key of the event.

t()

A struct that represents a command.

Functions

Converts the module into an t/0.

Types

Link to this type

aggregate_identifier_opt()

View Source
@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 a command.

Functions

Link to this macro

__using__(opts \\ [])

View Source (macro)
@spec __using__(opts :: [{:aggregate_identifier, aggregate_identifier_opt()}]) ::
  any()

Converts the module into an t/0.

Using

Usage

defmodule MyCommand do
  use OnePiece.Commanded.Command, 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 AssignRole do
  use OnePiece.Commanded.Command,
    aggregate_identifier: {:id, IdentityRoleId}

  embedded_schema do
    # ...
  end
end