Skip to content

Commit 6199436

Browse files
committed
Fix bug
1 parent 6138bf7 commit 6199436

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

models/issues/issue.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ func (issue *Issue) LoadPullRequest(ctx context.Context) (err error) {
223223
return nil
224224
}
225225

226-
func (issue *Issue) loadComments(ctx context.Context) (err error) {
226+
func (issue *Issue) LoadComments(ctx context.Context) (err error) {
227227
return issue.loadCommentsByType(ctx, CommentTypeUndefined)
228228
}
229229

@@ -344,7 +344,7 @@ func (issue *Issue) LoadAttributes(ctx context.Context) (err error) {
344344
return err
345345
}
346346

347-
if err = issue.loadComments(ctx); err != nil {
347+
if err = issue.LoadComments(ctx); err != nil {
348348
return err
349349
}
350350

services/issue/issue.go

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,14 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
301301
attachmentPaths = append(attachmentPaths, issue.Attachments[i].RelativePath())
302302
}
303303

304-
// TODO: deference all review comments
304+
// deference all review comments
305+
if err := issue.LoadComments(ctx); err != nil {
306+
return nil, err
307+
}
305308

306309
// delete all database data still assigned to this issue
307310
if err := db.DeleteBeans(ctx,
308311
&issues_model.ContentHistory{IssueID: issue.ID},
309-
&issues_model.Comment{IssueID: issue.ID},
310312
&issues_model.IssueLabel{IssueID: issue.ID},
311313
&issues_model.IssueDependency{IssueID: issue.ID},
312314
&issues_model.IssueAssignees{IssueID: issue.ID},
@@ -327,6 +329,41 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
327329
return nil, err
328330
}
329331

332+
for _, comment := range issue.Comments {
333+
if err := issues_model.DeleteComment(ctx, comment); err != nil {
334+
return nil, err
335+
}
336+
337+
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)
349+
// We should not return error here, because the comment has been removed from database.
350+
// users have to delete this ref manually or we should have a synchronize between
351+
// database comment table and git refs.
352+
}
353+
}
354+
355+
// delete all attachments related to this comment
356+
for _, attachment := range comment.Attachments {
357+
if err := storage.Attachments.Delete(repo_model.AttachmentRelativePath(attachment.UUID)); err != nil {
358+
// Even delete files failed, but the attachments has been removed from database, so we
359+
// should not return error but only record the error on logs.
360+
// users have to delete this attachments manually or we should have a
361+
// synchronize between database attachment table and attachment storage
362+
log.Error("delete attachment[uuid: %s] failed: %v", attachment.UUID, err)
363+
}
364+
}
365+
}
366+
330367
if err := committer.Commit(); err != nil {
331368
return nil, err
332369
}

0 commit comments

Comments
 (0)