Implemented team delete method
This commit is contained in:
32
models/teams_delete.go
Normal file
32
models/teams_delete.go
Normal file
@ -0,0 +1,32 @@
|
||||
package models
|
||||
|
||||
func (t *Team) Delete(id int64) (err error) {
|
||||
|
||||
// Check if the team exists
|
||||
_, err = GetTeamByID(id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Delete the team
|
||||
_, err = x.ID(id).Delete(&Team{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Delete team members
|
||||
_, err = x.Where("team_id = ?", id).Delete(&TeamMember{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Delete team <-> namespace relations
|
||||
_, err = x.Where("team_id = ?", id).Delete(&TeamNamespace{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Delete team <-> lists relations
|
||||
_, err = x.Where("team_id = ?", id).Delete(&TeamList{})
|
||||
return
|
||||
}
|
@ -17,3 +17,18 @@ func (t *Team) CanUpdate(user *User, id int64) bool {
|
||||
|
||||
return exists
|
||||
}
|
||||
|
||||
// CanDelete
|
||||
func (t *Team) CanDelete(user *User, id int64) bool {
|
||||
t.ID = id
|
||||
return t.IsAdmin(user)
|
||||
}
|
||||
|
||||
// IsAdmin
|
||||
func (t *Team) IsAdmin(user *User) bool {
|
||||
exists, _ := x.Where("team_id = ?", t.ID).
|
||||
And("user_id = ?", user.ID).
|
||||
And("is_admin = ?", true).
|
||||
Get(&TeamMember{})
|
||||
return exists
|
||||
}
|
Reference in New Issue
Block a user