revamp aggregate and use typestruct
All checks were successful
Build and Publish / build-release (push) Successful in 1m41s

This commit is contained in:
2026-04-22 11:37:04 -05:00
parent 5f2f9e9085
commit a7160aadcf
19 changed files with 228 additions and 185 deletions

View File

@@ -10,12 +10,11 @@ defmodule PolicyService.Projectors.PolicyProjector do
ProviderQuoteReceived,
AllQuotesReceived,
QuoteAccepted,
SolicitationSent,
SolicitationRequestSent,
PolicyIssued
}
alias PolicyService.Projections.PolicyApplication
alias PolicyService.Aggregates.PolicyId
import Ecto.Query
project(%PolicyApplicationSubmitted{} = e, _meta, fn multi ->
@@ -69,25 +68,20 @@ defmodule PolicyService.Projectors.PolicyProjector do
end)
|> Ecto.Multi.update(:policy_application, fn %{fetch: p} ->
Ecto.Changeset.change(p,
accepted_quote_id: e.quote.quote_id,
accepted_plan_id: e.plan.plan_id,
accepted_provider_id: e.provider.id,
accepted_at: parse_datetime(e.accepted_at),
status: "solicitation_sent"
accepted_by: e.accepted_by
)
end)
end)
project(%SolicitationSent{} = e, _meta, fn multi ->
project(%SolicitationRequestSent{} = e, _meta, fn multi ->
multi
|> Ecto.Multi.run(:fetch, fn repo, _ ->
{:ok, repo.get!(PolicyApplication, to_string(e.id))}
end)
|> Ecto.Multi.update(:policy_application, fn %{fetch: p} ->
Ecto.Changeset.change(p,
solicitation_id: e.solicitation_id,
solicitation_s3_key: e.s3_key,
solicitation_sent_at: parse_datetime(e.sent_at)
status: "awaiting_policy"
)
end)
end)
@@ -99,7 +93,7 @@ defmodule PolicyService.Projectors.PolicyProjector do
end)
|> Ecto.Multi.update(:policy_application, fn %{fetch: p} ->
Ecto.Changeset.change(p,
policy_number: e.policy_number,
provider_policy_number: e.provider_policy_number,
effective_date: parse_date(e.effective_date),
expiry_date: parse_date(e.expiry_date),
issued_at: parse_datetime(e.issued_at),