package checkout import ( "fmt" messages "git.k6n.net/go-cart-actor/proto/checkout" ) // mutation_remove_delivery.go // // Registers the RemoveDelivery mutation. // // Behavior: // - Removes the delivery entry whose Id == payload.Id. // - If not found, returns an error. // - Items previously associated with that delivery simply become "without delivery"; // subsequent delivery mutations can reassign them. func HandleRemoveDelivery(g *CheckoutGrain, m *messages.RemoveDelivery) error { if m == nil { return fmt.Errorf("RemoveDelivery: nil payload") } targetID := uint32(m.Id) index := -1 for i, d := range g.Deliveries { if d.Id == targetID { index = i break } } if index == -1 { return fmt.Errorf("RemoveDelivery: delivery id %d not found", m.Id) } // Remove delivery (order not preserved beyond necessity) g.Deliveries = append(g.Deliveries[:index], g.Deliveries[index+1:]...) return nil }