@@ -12,6 +12,7 @@ import (
12
12
issues_model "code.gitea.io/gitea/models/issues"
13
13
access_model "code.gitea.io/gitea/models/perm/access"
14
14
project_model "code.gitea.io/gitea/models/project"
15
+ pull_model "code.gitea.io/gitea/models/pull"
15
16
repo_model "code.gitea.io/gitea/models/repo"
16
17
system_model "code.gitea.io/gitea/models/system"
17
18
user_model "code.gitea.io/gitea/models/user"
@@ -267,10 +268,6 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
267
268
}
268
269
defer committer .Close ()
269
270
270
- if _ , err := db .GetEngine (ctx ).ID (issue .ID ).NoAutoCondition ().Delete (issue ); err != nil {
271
- return nil , err
272
- }
273
-
274
271
// update the total issue numbers
275
272
if err := repo_model .UpdateRepoIssueNumbers (ctx , issue .RepoID , issue .IsPull , false ); err != nil {
276
273
return nil , err
@@ -302,6 +299,13 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
302
299
}
303
300
304
301
// 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
+
305
309
if err := issue .LoadComments (ctx ); err != nil {
306
310
return nil , err
307
311
}
@@ -335,17 +339,8 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
335
339
}
336
340
337
341
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 )
349
344
// We should not return error here, because the comment has been removed from database.
350
345
// users have to delete this ref manually or we should have a synchronize between
351
346
// database comment table and git refs.
@@ -364,6 +359,29 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
364
359
}
365
360
}
366
361
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
+
367
385
if err := committer .Commit (); err != nil {
368
386
return nil , err
369
387
}
0 commit comments