Delete related PullAutoMerge and ReviewState on User/Repo Deletion (#19649)

* delete pullautomerges on repo/user deletion
* delete reviewstates on repo/user deletion
* optimize automerhe code
* add index to reviewstate
This commit is contained in:
6543 2022-05-08 15:46:34 +02:00 committed by GitHub
parent 4344a64107
commit 6a969681cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 124 additions and 95 deletions

View file

@ -12,6 +12,7 @@ import (
"strings"
"code.gitea.io/gitea/models/db"
pull_model "code.gitea.io/gitea/models/pull"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
@ -96,6 +97,25 @@ func init() {
db.RegisterModel(new(PullRequest))
}
func deletePullsByBaseRepoID(sess db.Engine, repoID int64) error {
deleteCond := builder.Select("id").From("pull_request").Where(builder.Eq{"pull_request.base_repo_id": repoID})
// Delete scheduled auto merges
if _, err := sess.In("pull_id", deleteCond).
Delete(&pull_model.AutoMerge{}); err != nil {
return err
}
// Delete review states
if _, err := sess.In("pull_id", deleteCond).
Delete(&pull_model.ReviewState{}); err != nil {
return err
}
_, err := sess.Delete(&PullRequest{BaseRepoID: repoID})
return err
}
// MustHeadUserName returns the HeadRepo's username if failed return blank
func (pr *PullRequest) MustHeadUserName() string {
if err := pr.LoadHeadRepo(); err != nil {