fix(project): delete all related entities when deleting a project
This commit is contained in:
parent
ce1d7778c7
commit
e9de7d8a24
@ -1083,6 +1083,46 @@ func (p *Project) Delete(s *xorm.Session, a web.Auth) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete related project entities
|
||||||
|
views, err := getViewsForProject(s, p.ID)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
viewIDs := []int64{}
|
||||||
|
for _, v := range views {
|
||||||
|
viewIDs = append(viewIDs, v.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.In("project_view_id", viewIDs).Delete(&Bucket{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.In("id", viewIDs).Delete(&ProjectView{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = removeFromFavorite(s, p.ID, a, FavoriteKindProject)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.Where("project_id = ?", p.ID).Delete(&LinkSharing{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.Where("project_id = ?", p.ID).Delete(&ProjectUser{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.Where("project_id = ?", p.ID).Delete(&TeamProject{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Delete the project
|
// Delete the project
|
||||||
_, err = s.ID(p.ID).Delete(&Project{})
|
_, err = s.ID(p.ID).Delete(&Project{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1486,6 +1486,18 @@ func (t *Task) Delete(s *xorm.Session, a web.Auth) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete all positions
|
||||||
|
_, err = s.Where("task_id = ?", t.ID).Delete(&TaskPosition{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete all bucket relations
|
||||||
|
_, err = s.Where("task_id = ?", t.ID).Delete(&TaskBucket{})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Actually delete the task
|
// Actually delete the task
|
||||||
_, err = s.ID(t.ID).Delete(Task{})
|
_, err = s.ID(t.ID).Delete(Task{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user