Don't delete a user if its the last one
the build failed
Details
the build failed
Details
This commit is contained in:
parent
ca88232109
commit
152a399567
|
@ -94,6 +94,19 @@ func (err ErrCouldNotGetUserID) Error() string {
|
||||||
return fmt.Sprintf("could not get user ID")
|
return fmt.Sprintf("could not get user ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ErrCannotDeleteLastUser represents a "ErrCannotDeleteLastUser" kind of error.
|
||||||
|
type ErrCannotDeleteLastUser struct{}
|
||||||
|
|
||||||
|
// IsErrCannotDeleteLastUser checks if an error is a ErrCannotDeleteLastUser.
|
||||||
|
func IsErrCannotDeleteLastUser(err error) bool {
|
||||||
|
_, ok := err.(ErrCannotDeleteLastUser)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrCannotDeleteLastUser) Error() string {
|
||||||
|
return fmt.Sprintf("cannot delete last user")
|
||||||
|
}
|
||||||
|
|
||||||
// ===================
|
// ===================
|
||||||
// Empty things errors
|
// Empty things errors
|
||||||
// ===================
|
// ===================
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package models
|
package models
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
// DeleteUserByID deletes a user by its ID
|
// DeleteUserByID deletes a user by its ID
|
||||||
func DeleteUserByID(id int64) error {
|
func DeleteUserByID(id int64) error {
|
||||||
// Check if the id is 0
|
// Check if the id is 0
|
||||||
|
@ -7,8 +9,18 @@ func DeleteUserByID(id int64) error {
|
||||||
return ErrIDCannotBeZero{}
|
return ErrIDCannotBeZero{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if there is > 1 user
|
||||||
|
total, err := x.Count(User{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if total < 2 {
|
||||||
|
return ErrCannotDeleteLastUser{}
|
||||||
|
}
|
||||||
|
|
||||||
// Delete the user
|
// Delete the user
|
||||||
_, err := x.Id(id).Delete(&User{})
|
_, err = x.Id(id).Delete(&User{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -42,6 +42,11 @@ func UserDelete(c echo.Context) error {
|
||||||
if models.IsErrIDCannotBeZero(err) {
|
if models.IsErrIDCannotBeZero(err) {
|
||||||
return c.JSON(http.StatusBadRequest, models.Message{"Id cannot be 0"})
|
return c.JSON(http.StatusBadRequest, models.Message{"Id cannot be 0"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if models.IsErrCannotDeleteLastUser(err) {
|
||||||
|
return c.JSON(http.StatusBadRequest, models.Message{"Cannot delete last user."})
|
||||||
|
}
|
||||||
|
|
||||||
return c.JSON(http.StatusInternalServerError, models.Message{"Could not delete user."})
|
return c.JSON(http.StatusInternalServerError, models.Message{"Could not delete user."})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue