Files
workload-service/lib/workload_service/handlers/task_completed_handler.ex
HaimKortovich cebd0f51c5
All checks were successful
Build and Publish / build-release (push) Successful in 1m24s
add task completed handler
2026-04-20 15:15:37 -05:00

52 lines
1.2 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" -> QuoteTask
# "solicitation" -> SolicitationTask
_ -> nil
end
if aggregate_module do
case Aggregate.aggregate_state(
WorkloadService.CommandedApp,
aggregate_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
:ok
rescue
e ->
Logger.error("TaskCompletedHandler: failed to process - #{inspect(e)}")
:ok
end
end