func handler()

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
}