Slide 38
Slide 38 text
defmodule Acme.Sales.Orders.Order do
alias Acme.Sales.Orders.Order
alias Acme.Sales.Commands.{PlaceOrder}
alias Acme.Events.{OrderPlaced}
defstruct [:uuid, :skus, :total_price_cents, :buyer_uuid]
def execute(%Order{uuid: nil}, %PlaceOrder{…}) do
%OrderPlaced{…}
end
def apply(%Order{} = state, %OrderPlaced{…}) do
%Order{state | uuid: uuid, …}
end
end
Aggregate Root