Library/models/items_add_update.go

48 lines
890 B
Go
Raw Permalink Normal View History

package models
// AddOrUpdateItem adds or updates a item from a item struct
2018-03-06 11:36:49 +00:00
func AddOrUpdateItem(item Item, doer *User) (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
2018-01-24 12:04:47 +00:00
return Item{}, ErrItemTitleCannotBeEmpty{}
}
_, err = x.Insert(&item)
if err != nil {
return Item{}, err
}
2018-03-06 11:36:49 +00:00
// Log
err = logAction(ActionTypeItemAdded, doer, item.ID)
if err != nil {
return Item{}, err
}
} else {
_, err = x.ID(item.ID).Update(&item)
if err != nil {
return Item{}, err
}
2018-03-06 11:36:49 +00:00
// Log
err = logAction(ActionTypeItemUpdated, doer, item.ID)
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
}