in inventory-reserve/main.go [40:70]
func handler(ctx context.Context, ord models.Order) (models.Order, error) {
log.Printf("[%s] - processing inventory reservation", ord.OrderID)
var newInvTrans = models.Inventory{
OrderID: ord.OrderID,
OrderItems: ord.ItemIds(),
}
// reserve the items in the inventory
newInvTrans.Reserve()
// Annotate saga with inventory transaction id
ord.Inventory = newInvTrans
// Save the reservation
err := saveInventory(ctx, newInvTrans)
if err != nil {
log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
return models.Order{}, models.NewErrReserveInventory(err.Error())
}
// testing scenario
if ord.OrderID[0:1] == "3" {
return ord, models.NewErrReserveInventory("Unable to update newInvTrans for order " + ord.OrderID)
}
log.Printf("[%s] - reservation processed", ord.OrderID)
return ord, nil
}