Current section
Files
Jump to
Current section
Files
lib/core/todo/todo.ex
defmodule Core.ToDo do
use Perspective.DomainNode
defstruct id: "", name: "", completed: false
def apply_event(_todo, %Core.ToDoAdded{} = event) do
%Core.ToDo{}
|> Map.put(:id, event.id)
|> Map.put(:name, event.name)
|> case do
new_todo -> {:ok, new_todo}
end
end
def apply_event(todo, %Core.ToDoRenamed{} = event) do
todo
|> Map.put(:name, event.name)
|> case do
updated_todo -> {:ok, updated_todo}
end
end
def apply_event(todo, %Core.ToDoCompleted{} = _event) do
todo
|> Map.put(:completed, true)
|> case do
completed_todo -> {:ok, completed_todo}
end
end
end