View Source OnePiece.Commanded.ValueObject (OnePiece.Commanded v0.24.0)
Defines "Value Object" modules.
Summary
Functions
Converts the module into an Ecto.Schema
and add factory functions to create structs.
Returns an Ecto.Changeset.t/0
for a given value object struct.
Functions
@spec __using__(opts :: []) :: any()
Converts the module into an Ecto.Schema
and add factory functions to create structs.
Using
Derives
Usage
defmodule MyValueObject do
use OnePiece.Commanded.ValueObject
embedded_schema do
field :title, :string
# ...
end
end
{:ok, my_value} = MyValueObject.new(%{title: "Hello, World!"})
Returns an Ecto.Changeset.t/0
for a given value object struct.
It reads the enforced keys from the struct and validates the required fields.
Also, it casts the embeds. It is useful when you override the changeset/2
function in your value object.
Examples
defmodule MyValueObject do
use OnePiece.Commanded.ValueObject
@enforce_keys [:title, :amount]
embedded_schema do
field :title, :string
field :amount, :integer
end
def changeset(message, attrs) do
message
|> ValueObject.changeset(attrs)
|> Changeset.validate_number(:amount, greater_than: 0)
end
end