in inventory-release/main.go [41:72]
func handler(ctx context.Context, ord models.Order) (models.Order, error) {
log.Printf("[%s] - processing inventory release", ord.OrderID)
// Find inventory transaction
inventory, err := getTransaction(ctx, ord.OrderID)
if err != nil {
log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
return models.Order{}, models.NewErrReleaseInventory(err.Error())
}
// release the items to the inventory
inventory.Release()
// save the inventory transaction
err = saveTransaction(ctx, inventory)
if err != nil {
log.Printf("[%s] - error! %s", ord.OrderID, err.Error())
return ord, models.NewErrReleaseInventory(err.Error())
}
ord.Inventory = inventory
// testing scenario
if ord.OrderID[0:2] == "33" {
return ord, models.NewErrReleaseInventory("Unable to release inventory for order " + ord.OrderID)
}
log.Printf("[%s] - reservation processed", ord.OrderID)
return ord, nil
}