All checks were successful
Build and Publish / build-release (push) Successful in 1m24s
52 lines
1.2 KiB
Elixir
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
|