35 lines
1.2 KiB
Go
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
|
|
}
|