func handler()

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
}