Files
workload-service/lib/workload_service/handlers/task_completed_handler.ex
HaimKortovich 2bf99bfb37
Some checks failed
Build and Publish / build-release (push) Failing after 37s
add type specs and fix id issues
2026-04-21 12:55:38 -05:00

50 lines
1.3 KiB
Elixir

defmodule WorkloadService.Handlers.TaskCompletedHandler do
use Commanded.Event.Handler,
application: WorkloadService.CommandedApp,
name: "TaskCompletedHandler"
require Logger
alias WorkloadService.Events.TaskCompleted
alias Commanded.Aggregates.Aggregate
alias WorkloadService.MessageBus
alias WorkloadService.Aggregates.{
QuoteTask,
SolicitationTask
}
def handle(%TaskCompleted{} = event, _metadata) do
aggregate_module =
case event.id.type do
"quote" -> {:ok, QuoteTask}
# "solicitation" -> SolicitationTask
_ -> {:error, "aggregate module not found for event type #{event.id}"}
end
case aggregate_module do
{:error, reason} ->
{:error, reason}
{:ok, module} ->
case Aggregate.aggregate_state(
WorkloadService.CommandedApp,
module,
event.id
) do
nil ->
Logger.warning("TaskCompletedHandler: aggregate not found for #{event.id}")
state ->
MessageBus.publish(
"workload_service.events.quote_task_completed",
"quote_task.completed",
state
)
Logger.info("TaskCompletedHandler: published for #{event.id}")
end
end
end
end