1
0

Added check to only let a user delete his own list

This commit is contained in:
konrad
2018-06-12 18:35:36 +02:00
committed by kolaente
parent 5ba9d76328
commit be18247682
5 changed files with 56 additions and 9 deletions

View File

@ -155,3 +155,19 @@ func IsErrListItemCannotBeEmpty(err error) bool {
func (err ErrListItemCannotBeEmpty) Error() string {
return fmt.Sprintf("List item text cannot be empty.")
}
// ErrListItemCannotBeEmpty represents a "ErrListDoesNotExist" kind of error. Used if the list does not exist.
type ErrListItemDoesNotExist struct{
ID int64
}
// IsErrListItemCannotBeEmpty checks if an error is a ErrListDoesNotExist.
func IsErrListItemDoesNotExist(err error) bool {
_, ok := err.(ErrListItemDoesNotExist)
return ok
}
func (err ErrListItemDoesNotExist) Error() string {
return fmt.Sprintf("List item does not exist. [ID: %d]", err.ID)
}

View File

@ -65,9 +65,33 @@ func GetItemsByListID(listID int64) (items []*ListItem, err error) {
return
}
// DeleteListItemByID deletes a list item by its ID
func DeleteListItemByIDtemByID(itemID int64) (err error) {
_, err = x.ID(itemID).Delete(ListItem{})
func GetListItemByID(listItemID int64) (listItem ListItem, err error) {
exists, err := x.ID(listItemID).Get(&listItem)
if err != nil {
return ListItem{}, err
}
if !exists {
return ListItem{}, ErrListItemDoesNotExist{listItemID}
}
return
}
// DeleteListItemByID deletes a list item by its ID
func DeleteListItemByID(itemID int64, doer *User) (err error) {
// Check if it exists
listitem, err := GetListItemByID(itemID)
if err != nil {
return
}
// Check if the user hat the right to delete that item
if listitem.CreatedByID != doer.ID {
return
}
_, err = x.ID(itemID).Delete(ListItem{})
return
}