From a6475ad5c65ae54be92a4f32b503748a06a04d02 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 22 Aug 2022 18:14:48 +0800 Subject: [PATCH] Delete cloud brain task when deleting project --- models/repo.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/models/repo.go b/models/repo.go index 5e11df2b6..d104acce5 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1788,7 +1788,8 @@ func DeleteRepository(doer *User, uid, repoID int64) error { // Delete dataset attachment record and remove related files deleteDatasetAttachmentByRepoId(sess, repoID) - + // Delete cloudbrain task record + deleteCloudbrainByRepoId(sess, repoID) if err = deleteBeans(sess, &Access{RepoID: repo.ID}, &Action{RepoID: repo.ID}, @@ -1988,6 +1989,26 @@ func deleteDatasetAttachmentByRepoId(sess *xorm.Session, repoId int64) error { return err } +func deleteCloudbrainByRepoId(sess *xorm.Session, repoId int64) error { + cloudbrains := make([]*Cloudbrain, 0) + if err := sess. + Where("repo_id = ?", repoId). + Find(&cloudbrains); err != nil { + return err + } + if len(cloudbrains) == 0 { + return nil + } + for _, cloudbrain := range cloudbrains { + err := DeleteJob(cloudbrain) + if err != nil { + return err + } + } + return nil + +} + // GetRepositoryByOwnerAndName returns the repository by given ownername and reponame. func GetRepositoryByOwnerAndName(ownerName, repoName string) (*Repository, error) { return getRepositoryByOwnerAndName(x, ownerName, repoName)