@@ -12,6 +12,7 @@ import (
1212 issues_model "code.gitea.io/gitea/models/issues"
1313 access_model "code.gitea.io/gitea/models/perm/access"
1414 project_model "code.gitea.io/gitea/models/project"
15+ pull_model "code.gitea.io/gitea/models/pull"
1516 repo_model "code.gitea.io/gitea/models/repo"
1617 system_model "code.gitea.io/gitea/models/system"
1718 user_model "code.gitea.io/gitea/models/user"
@@ -267,10 +268,6 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
267268 }
268269 defer committer .Close ()
269270
270- if _ , err := db .GetEngine (ctx ).ID (issue .ID ).NoAutoCondition ().Delete (issue ); err != nil {
271- return nil , err
272- }
273-
274271 // update the total issue numbers
275272 if err := repo_model .UpdateRepoIssueNumbers (ctx , issue .RepoID , issue .IsPull , false ); err != nil {
276273 return nil , err
@@ -302,6 +299,13 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
302299 }
303300
304301 // deference all review comments
302+ if err := issue .LoadRepo (ctx ); err != nil {
303+ return nil , err
304+ }
305+ if err := issue .LoadPullRequest (ctx ); err != nil {
306+ return nil , err
307+ }
308+
305309 if err := issue .LoadComments (ctx ); err != nil {
306310 return nil , err
307311 }
@@ -335,17 +339,8 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
335339 }
336340
337341 if comment .ReviewID > 0 {
338- if err := comment .LoadIssue (ctx ); err != nil {
339- return nil , err
340- }
341- if err := comment .Issue .LoadRepo (ctx ); err != nil {
342- return nil , err
343- }
344- if err := comment .Issue .LoadPullRequest (ctx ); err != nil {
345- return nil , err
346- }
347- if err := git .RemoveRef (ctx , comment .Issue .Repo .RepoPath (), issues_model .GetCodeCommentRef (comment .Issue .PullRequest .Index , comment .ID )); err != nil {
348- log .Error ("Unable to remove ref in base repository for PR[%d] Error: %v" , comment .Issue .PullRequest .ID , err )
342+ if err := git .RemoveRef (ctx , issue .Repo .RepoPath (), issues_model .GetCodeCommentRef (issue .PullRequest .Index , comment .ID )); err != nil {
343+ log .Error ("Unable to remove ref in base repository for PR[%d] Error: %v" , issue .PullRequest .ID , err )
349344 // We should not return error here, because the comment has been removed from database.
350345 // users have to delete this ref manually or we should have a synchronize between
351346 // database comment table and git refs.
@@ -364,6 +359,29 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
364359 }
365360 }
366361
362+ // delete all pull request records
363+ if issue .IsPull {
364+ // Delete scheduled auto merges
365+ if _ , err := db .GetEngine (ctx ).Where ("pull_id=?" , issue .PullRequest .ID ).
366+ Delete (& pull_model.AutoMerge {}); err != nil {
367+ return nil , err
368+ }
369+
370+ // Delete review states
371+ if _ , err := db .GetEngine (ctx ).Where ("pull_id=?" , issue .PullRequest .ID ).
372+ Delete (& pull_model.ReviewState {}); err != nil {
373+ return nil , err
374+ }
375+
376+ if _ , err := db .GetEngine (ctx ).ID (issue .PullRequest .ID ).Delete (& issues_model.PullRequest {}); err != nil {
377+ return nil , err
378+ }
379+ }
380+
381+ if _ , err := db .GetEngine (ctx ).ID (issue .ID ).NoAutoCondition ().Delete (issue ); err != nil {
382+ return nil , err
383+ }
384+
367385 if err := committer .Commit (); err != nil {
368386 return nil , err
369387 }
0 commit comments