Files
go-cart-actor/pkg/checkout/mutation_initialize_checkout.go
Mats Törnberg 94a04a154c
All checks were successful
Build and Publish / BuildAndDeployAmd64 (push) Successful in 43s
Build and Publish / BuildAndDeployArm64 (push) Successful in 4m33s
update
2025-12-03 19:17:27 +01:00

47 lines
1.2 KiB
Go

package checkout
import (
"encoding/json"
"fmt"
messages "git.k6n.net/go-cart-actor/proto/checkout"
)
// mutation_initialize_checkout.go
//
// Registers the InitializeCheckout mutation.
// This mutation is invoked AFTER an external checkout session
// has been successfully created or updated. It persists the
// order reference / status and marks the checkout as having a payment in progress.
//
// Behavior:
// - Sets OrderId to the order ID.
// - Sets Status to the current status.
// - Sets PaymentInProgress flag.
// - Assumes inventory is already reserved.
//
// Validation:
// - Returns an error if payload is nil.
// - Returns an error if orderId is empty.
func HandleInitializeCheckout(g *CheckoutGrain, m *messages.InitializeCheckout) error {
if m == nil {
return fmt.Errorf("InitializeCheckout: nil payload")
}
// if g.OrderId == "" {
// return fmt.Errorf("InitializeCheckout: missing orderId")
// }
if g.CartState != nil {
return fmt.Errorf("InitializeCheckout: checkout already initialized")
}
err := json.Unmarshal(m.CartState.Value, &g.CartState)
if err != nil {
return err
}
g.CartTotalPrice = g.CartState.TotalPrice
return nil
}