simplify issue deletion query (#27312)

- There's no need for `In` to be used, as it's a single parameter that's
being passed.

Refs: https://codeberg.org/forgejo/forgejo/pulls/1521

(cherry picked from commit 4a4955f43ae7fc50cfe3b48409a0a10c82625a19)

Co-authored-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
Earl Warren 2023-10-02 04:30:10 +02:00 committed by GitHub
parent c9cc57f130
commit cb68e01e22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 47 deletions

View File

@ -510,17 +510,6 @@ func UpdateIssueDeadline(ctx context.Context, issue *Issue, deadlineUnix timeuti
return committer.Commit() return committer.Commit()
} }
// DeleteInIssue delete records in beans with external key issue_id = ?
func DeleteInIssue(ctx context.Context, issueID int64, beans ...any) error {
e := db.GetEngine(ctx)
for _, bean := range beans {
if _, err := e.In("issue_id", issueID).Delete(bean); err != nil {
return err
}
}
return nil
}
// FindAndUpdateIssueMentions finds users mentioned in the given content string, and saves them in the database. // FindAndUpdateIssueMentions finds users mentioned in the given content string, and saves them in the database.
func FindAndUpdateIssueMentions(ctx context.Context, issue *Issue, doer *user_model.User, content string) (mentions []*user_model.User, err error) { func FindAndUpdateIssueMentions(ctx context.Context, issue *Issue, doer *user_model.User, content string) (mentions []*user_model.User, err error) {
rawMentions := references.FindAllMentionsMarkdown(content) rawMentions := references.FindAllMentionsMarkdown(content)

View File

@ -262,45 +262,27 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) error {
} }
// delete all database data still assigned to this issue // delete all database data still assigned to this issue
if err := issues_model.DeleteInIssue(ctx, issue.ID, if err := db.DeleteBeans(ctx,
&issues_model.ContentHistory{}, &issues_model.ContentHistory{IssueID: issue.ID},
&issues_model.Comment{}, &issues_model.Comment{IssueID: issue.ID},
&issues_model.IssueLabel{}, &issues_model.IssueLabel{IssueID: issue.ID},
&issues_model.IssueDependency{}, &issues_model.IssueDependency{IssueID: issue.ID},
&issues_model.IssueAssignees{}, &issues_model.IssueAssignees{IssueID: issue.ID},
&issues_model.IssueUser{}, &issues_model.IssueUser{IssueID: issue.ID},
&activities_model.Notification{}, &activities_model.Notification{IssueID: issue.ID},
&issues_model.Reaction{}, &issues_model.Reaction{IssueID: issue.ID},
&issues_model.IssueWatch{}, &issues_model.IssueWatch{IssueID: issue.ID},
&issues_model.Stopwatch{}, &issues_model.Stopwatch{IssueID: issue.ID},
&issues_model.TrackedTime{}, &issues_model.TrackedTime{IssueID: issue.ID},
&project_model.ProjectIssue{}, &project_model.ProjectIssue{IssueID: issue.ID},
&repo_model.Attachment{}, &repo_model.Attachment{IssueID: issue.ID},
&issues_model.PullRequest{}, &issues_model.PullRequest{IssueID: issue.ID},
&issues_model.Comment{RefIssueID: issue.ID},
&issues_model.IssueDependency{DependencyID: issue.ID},
&issues_model.Comment{DependentIssueID: issue.ID},
); err != nil { ); err != nil {
return err return err
} }
// References to this issue in other issues
if _, err := db.DeleteByBean(ctx, &issues_model.Comment{
RefIssueID: issue.ID,
}); err != nil {
return err
}
// Delete dependencies for issues in other repositories
if _, err := db.DeleteByBean(ctx, &issues_model.IssueDependency{
DependencyID: issue.ID,
}); err != nil {
return err
}
// delete from dependent issues
if _, err := db.DeleteByBean(ctx, &issues_model.Comment{
DependentIssueID: issue.ID,
}); err != nil {
return err
}
return committer.Commit() return committer.Commit()
} }