fix(project): delete all related entities when deleting a project
continuous-integration/drone/push Build is failing Details

This commit is contained in:
kolaente 2024-04-13 21:43:44 +02:00
parent ce1d7778c7
commit e9de7d8a24
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 52 additions and 0 deletions

View File

@ -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
_, err = s.ID(p.ID).Delete(&Project{})
if err != nil {

View File

@ -1486,6 +1486,18 @@ func (t *Task) Delete(s *xorm.Session, a web.Auth) (err error) {
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
_, err = s.ID(t.ID).Delete(Task{})
if err != nil {