Files
go-cart-actor/cmd/order/flow_registry.go
T
mats 83ed477aa4
Build and Publish / BuildAndDeployAmd64 (push) Failing after 4s
Build and Publish / BuildAndDeployArm64 (push) Failing after 7s
flow
2026-07-19 00:36:01 +02:00

35 lines
1.2 KiB
Go

package main
import (
"log/slog"
"git.k6n.net/mats/go-cart-actor/pkg/flow"
"git.k6n.net/mats/go-cart-actor/pkg/order"
)
func buildFlowRegistry(
applier *orderedApplier,
provider order.PaymentProvider,
inventoryReservations order.InventoryReservationService,
emitPub order.Publisher,
emailSender order.EmailSender,
emailTemplates order.EmailTemplateStore,
prefChecker order.EmailPreferenceChecker,
logger *slog.Logger,
) *flow.Registry {
freg := flow.NewRegistry()
flow.RegisterBuiltinHooks(freg)
order.RegisterFlowActions(freg, applier, provider, prefChecker)
order.RegisterInventoryReservationActions(freg, applier, inventoryReservations)
order.RegisterEmitHook(freg, emitPub)
order.RegisterEmailHook(freg, applier, emailSender, emailTemplates, prefChecker)
order.RegisterFulfillmentWebhookHook(freg, applier, nil)
// emit_order_created is now handled by the applier's emitOnApply callback
// under the applier's lock, which collapses the crash window. Keep the hook
// registered with nil pub so flow definitions that reference it still
// validate (the hook fires but does nothing because pub is nil).
order.RegisterOrderCreatedEmit(freg, applier, nil, "order", "order")
registerProjectFlowHooks(freg, applier, logger)
return freg
}