This commit is contained in:
@@ -44,6 +44,7 @@ defmodule WorkloadService.Aggregates.Task do
|
||||
|
||||
alias unquote(commands_module).CreateTask
|
||||
alias unquote(commands_module).SubmitResponse
|
||||
alias unquote(commands_module).RequestApproval
|
||||
alias unquote(commands_module).ApproveSubmission
|
||||
alias unquote(commands_module).CompleteTask
|
||||
|
||||
@@ -86,6 +87,18 @@ defmodule WorkloadService.Aggregates.Task do
|
||||
end
|
||||
end
|
||||
|
||||
@impl Aggregate
|
||||
def execute(%__MODULE__{status: "draft"}, %RequestApproval{} = cmd) do
|
||||
%WorkloadService.Events.ApprovalRequested{
|
||||
id: cmd.id
|
||||
}
|
||||
end
|
||||
|
||||
@impl Aggregate
|
||||
def execute(%__MODULE__{status: status}, %RequestApproval{}) do
|
||||
{:error, {:invalid_state, "cannot request approval in state: #{status}"}}
|
||||
end
|
||||
|
||||
@impl Aggregate
|
||||
def execute(%__MODULE__{id: id, status: "draft"}, %ApproveSubmission{}) do
|
||||
%WorkloadService.Events.SubmissionApproved{
|
||||
@@ -141,6 +154,14 @@ defmodule WorkloadService.Aggregates.Task do
|
||||
}
|
||||
end
|
||||
|
||||
@impl Aggregate
|
||||
def apply(%__MODULE__{} = agg, %WorkloadService.Events.ApprovalRequested{}) do
|
||||
%{
|
||||
agg
|
||||
| status: "approval_requested"
|
||||
}
|
||||
end
|
||||
|
||||
@impl Aggregate
|
||||
def apply(%__MODULE__{} = agg, %WorkloadService.Events.TaskCompleted{}) do
|
||||
%{
|
||||
|
||||
Reference in New Issue
Block a user