2017-10-10 20:47:54 +00:00
|
|
|
package models
|
|
|
|
|
2017-11-08 09:55:17 +00:00
|
|
|
// DeleteBookByID deletes a book by its ID
|
2018-03-06 11:36:49 +00:00
|
|
|
func DeleteBookByID(id int64, doer *User) error {
|
2017-11-24 15:27:35 +00:00
|
|
|
// Check if the id is 0
|
|
|
|
if id == 0 {
|
2018-01-24 11:58:00 +00:00
|
|
|
return ErrIDCannotBeZero{}
|
2017-11-24 15:27:35 +00:00
|
|
|
}
|
|
|
|
|
2017-10-10 20:47:54 +00:00
|
|
|
// Delete the book
|
|
|
|
_, err := x.Id(id).Delete(&Book{})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2018-01-15 12:12:26 +00:00
|
|
|
// Delete all author associations for that book
|
2017-11-07 15:35:10 +00:00
|
|
|
_, err = x.Delete(&AuthorBook{BookID: id})
|
2017-11-29 11:25:52 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Delete all quantites for this book
|
|
|
|
_, err = x.Delete(&Quantity{ItemID: id})
|
2018-03-06 11:36:49 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Logging
|
|
|
|
err = logAction(ActionTypeBookDeleted, doer, id)
|
2017-10-10 20:47:54 +00:00
|
|
|
|
|
|
|
return err
|
2017-11-07 15:35:10 +00:00
|
|
|
}
|