package models

// AddOrUpdateItem adds or updates a item from a item struct
func AddOrUpdateItem(item Item) (newItem Item, err error) {
	// save the quantity for later use
	qty := item.Quantity

	if item.ID == 0 {
		if item.Title != "" { // Only insert it if the title is not empty
			_, err = x.Insert(&item)

			if err != nil {
				return Item{}, err
			}
		}
	} else {
		_, err = x.ID(item.ID).Update(&item)

		if err != nil {
			return Item{}, err
		}
	}

	// Set the Quantity
	err = item.setQuantity(qty)
	if err != nil {
		return Item{}, err
	}

	newItem, _, err = GetItemByID(item.ID)

	return newItem, err
}
