Skip to content

Commit 8440344

Browse files
committed
Rename the function for post database transaction
1 parent 5e3a885 commit 8440344

File tree

8 files changed

+51
-50
lines changed

8 files changed

+51
-50
lines changed

modules/util/cleanup.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

modules/util/post_tx_action.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package util
5+
6+
// PostTxAction is a function that is executed after a database transaction
7+
type PostTxAction func()
8+
9+
func NewPostTxAction() PostTxAction {
10+
return func() {}
11+
}
12+
13+
func (f PostTxAction) Append(appendF PostTxAction) PostTxAction {
14+
return func() {
15+
f()
16+
appendF()
17+
}
18+
}

services/issue/comments.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func UpdateComment(ctx context.Context, c *issues_model.Comment, contentVersion
136136

137137
// deleteComment deletes the comment
138138
func deleteComment(ctx context.Context, comment *issues_model.Comment, removeAttachments bool) (*issues_model.Comment, func(), error) {
139-
storageCleanup := util.NewCleanUpFunc()
139+
storageCleanup := util.NewPostTxAction()
140140
deletedReviewComment, err := db.WithTx2(ctx, func(ctx context.Context) (*issues_model.Comment, error) {
141141
if removeAttachments {
142142
// load attachments before deleting the comment

services/issue/issue.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -191,16 +191,16 @@ func DeleteIssue(ctx context.Context, doer *user_model.User, gitRepo *git.Reposi
191191
}
192192

193193
// delete entries in database
194-
cleanup, err := deleteIssue(ctx, issue, true)
194+
postTxActions, err := deleteIssue(ctx, issue, true)
195195
if err != nil {
196196
return err
197197
}
198-
cleanup()
198+
postTxActions()
199199

200200
// delete pull request related git data
201201
if issue.IsPull && gitRepo != nil {
202202
if err := gitRepo.RemoveReference(issue.PullRequest.GetGitHeadRefName()); err != nil {
203-
return err
203+
log.Error("DeleteIssue: RemoveReference %s: %v", issue.PullRequest.GetGitHeadRefName(), err)
204204
}
205205
}
206206

@@ -259,8 +259,8 @@ func GetRefEndNamesAndURLs(issues []*issues_model.Issue, repoLink string) (map[i
259259
}
260260

261261
// deleteIssue deletes the issue
262-
func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachments bool) (util.CleanUpFunc, error) {
263-
cleanup := util.NewCleanUpFunc()
262+
func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachments bool) (util.PostTxAction, error) {
263+
postTxActions := util.NewPostTxAction()
264264
if err := db.WithTx(ctx, func(ctx context.Context) error {
265265
if _, err := db.GetEngine(ctx).ID(issue.ID).NoAutoCondition().Delete(issue); err != nil {
266266
return err
@@ -316,11 +316,11 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachmen
316316
}
317317

318318
for _, comment := range issue.Comments {
319-
_, cleanupDeleteComment, err := deleteComment(ctx, comment, deleteAttachments)
319+
_, postTxActionsDeleteComment, err := deleteComment(ctx, comment, deleteAttachments)
320320
if err != nil {
321321
return fmt.Errorf("deleteComment [comment_id: %d]: %w", comment.ID, err)
322322
}
323-
cleanup = cleanup.Append(cleanupDeleteComment)
323+
postTxActions = postTxActions.Append(postTxActionsDeleteComment)
324324
}
325325

326326
if deleteAttachments {
@@ -330,7 +330,7 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachmen
330330
return err
331331
}
332332
// the storage cleanup function to remove attachments could be called after all transactions are committed
333-
cleanup = cleanup.Append(func() {
333+
postTxActions = postTxActions.Append(func() {
334334
// Remove issue attachment files.
335335
for i := range issue.Attachments {
336336
system_model.RemoveStorageWithNotice(ctx, storage.Attachments, "Delete issue attachment", issue.Attachments[i].RelativePath())
@@ -341,35 +341,35 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachmen
341341
}); err != nil {
342342
return nil, err
343343
}
344-
return cleanup, nil
344+
return postTxActions, nil
345345
}
346346

347347
// DeleteOrphanedIssues delete issues without a repo
348348
func DeleteOrphanedIssues(ctx context.Context) error {
349-
cleanup := util.NewCleanUpFunc()
349+
postTxActions := util.NewPostTxAction()
350350
if err := db.WithTx(ctx, func(ctx context.Context) error {
351351
repoIDs, err := issues_model.GetOrphanedIssueRepoIDs(ctx)
352352
if err != nil {
353353
return err
354354
}
355355
for i := range repoIDs {
356-
deleteIssuesCleanup, err := DeleteIssuesByRepoID(ctx, repoIDs[i], true)
356+
postTxActionsDeleteIssues, err := DeleteIssuesByRepoID(ctx, repoIDs[i], true)
357357
if err != nil {
358358
return err
359359
}
360-
cleanup = cleanup.Append(deleteIssuesCleanup)
360+
postTxActions = postTxActions.Append(postTxActionsDeleteIssues)
361361
}
362362
return nil
363363
}); err != nil {
364364
return err
365365
}
366-
cleanup()
366+
postTxActions()
367367
return nil
368368
}
369369

370370
// DeleteIssuesByRepoID deletes issues by repositories id
371-
func DeleteIssuesByRepoID(ctx context.Context, repoID int64, deleteAttachments bool) (util.CleanUpFunc, error) {
372-
cleanup := util.NewCleanUpFunc()
371+
func DeleteIssuesByRepoID(ctx context.Context, repoID int64, deleteAttachments bool) (util.PostTxAction, error) {
372+
postTxActions := util.NewPostTxAction()
373373
for {
374374
issues := make([]*issues_model.Issue, 0, db.DefaultMaxInSize)
375375
if err := db.GetEngine(ctx).
@@ -385,13 +385,13 @@ func DeleteIssuesByRepoID(ctx context.Context, repoID int64, deleteAttachments b
385385
}
386386

387387
for _, issue := range issues {
388-
deleteIssueCleanUp, err := deleteIssue(ctx, issue, deleteAttachments)
388+
postTxActionsDeleteIssue, err := deleteIssue(ctx, issue, deleteAttachments)
389389
if err != nil {
390390
return nil, fmt.Errorf("deleteIssue [issue_id: %d]: %w", issue.ID, err)
391391
}
392-
cleanup = cleanup.Append(deleteIssueCleanUp)
392+
postTxActions = postTxActions.Append(postTxActionsDeleteIssue)
393393
}
394394
}
395395

396-
return cleanup, nil
396+
return postTxActions, nil
397397
}

services/issue/issue_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ func TestIssue_DeleteIssue(t *testing.T) {
4444
ID: issueIDs[2],
4545
}
4646

47-
cleanup, err := deleteIssue(db.DefaultContext, issue, true)
47+
postTxActions, err := deleteIssue(db.DefaultContext, issue, true)
4848
assert.NoError(t, err)
49-
cleanup()
49+
postTxActions()
5050
issueIDs, err = issues_model.GetIssueIDsByRepoID(db.DefaultContext, 1)
5151
assert.NoError(t, err)
5252
assert.Len(t, issueIDs, 4)
@@ -56,9 +56,9 @@ func TestIssue_DeleteIssue(t *testing.T) {
5656
assert.NoError(t, err)
5757
issue, err = issues_model.GetIssueByID(db.DefaultContext, 4)
5858
assert.NoError(t, err)
59-
cleanup, err = deleteIssue(db.DefaultContext, issue, true)
59+
postTxActions, err = deleteIssue(db.DefaultContext, issue, true)
6060
assert.NoError(t, err)
61-
cleanup()
61+
postTxActions()
6262
assert.Len(t, attachments, 2)
6363
for i := range attachments {
6464
attachment, err := repo_model.GetAttachmentByUUID(db.DefaultContext, attachments[i].UUID)
@@ -80,9 +80,9 @@ func TestIssue_DeleteIssue(t *testing.T) {
8080
assert.NoError(t, err)
8181
assert.False(t, left)
8282

83-
cleanup, err = deleteIssue(db.DefaultContext, issue2, true)
83+
postTxActions, err = deleteIssue(db.DefaultContext, issue2, true)
8484
assert.NoError(t, err)
85-
cleanup()
85+
postTxActions()
8686
left, err = issues_model.IssueNoDependenciesLeft(db.DefaultContext, issue1)
8787
assert.NoError(t, err)
8888
assert.True(t, left)

services/repository/delete.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func DeleteRepositoryDirectly(ctx context.Context, repoID int64, ignoreOrgTeams
201201

202202
// Delete Issues and related objects
203203
// attachments will be deleted later with repo_id
204-
cleanup, err := issue_service.DeleteIssuesByRepoID(ctx, repoID, false)
204+
postTxActions, err := issue_service.DeleteIssuesByRepoID(ctx, repoID, false)
205205
if err != nil {
206206
return err
207207
}
@@ -298,7 +298,7 @@ func DeleteRepositoryDirectly(ctx context.Context, repoID int64, ignoreOrgTeams
298298

299299
committer.Close()
300300

301-
cleanup()
301+
postTxActions()
302302

303303
if needRewriteKeysFile {
304304
if err := asymkey_service.RewriteAllPublicKeys(ctx); err != nil {

services/user/delete.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import (
3333
)
3434

3535
// deleteUser deletes models associated to an user.
36-
func deleteUser(ctx context.Context, u *user_model.User, purge bool) (cleanup util.CleanUpFunc, err error) {
37-
cleanup = util.NewCleanUpFunc()
36+
func deleteUser(ctx context.Context, u *user_model.User, purge bool) (postTxActions util.PostTxAction, err error) {
37+
postTxActions = util.NewPostTxAction()
3838

3939
// ***** START: Watch *****
4040
watchedRepoIDs, err := db.FindIDs(ctx, "watch", "watch.repo_id",
@@ -135,7 +135,7 @@ func deleteUser(ctx context.Context, u *user_model.User, purge bool) (cleanup ut
135135
return nil, err
136136
}
137137

138-
cleanup = cleanup.Append(func() {
138+
postTxActions = postTxActions.Append(func() {
139139
for _, a := range comment.Attachments {
140140
if err := storage.Attachments.Delete(a.RelativePath()); err != nil {
141141
if !errors.Is(err, os.ErrNotExist) {
@@ -227,5 +227,5 @@ func deleteUser(ctx context.Context, u *user_model.User, purge bool) (cleanup ut
227227
return nil, fmt.Errorf("delete: %w", err)
228228
}
229229

230-
return cleanup, nil
230+
return postTxActions, nil
231231
}

services/user/user.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) error {
243243
return packages_model.ErrUserOwnPackages{UID: u.ID}
244244
}
245245

246-
cleanup, err := deleteUser(ctx, u, purge)
246+
postTxActions, err := deleteUser(ctx, u, purge)
247247
if err != nil {
248248
return fmt.Errorf("DeleteUser: %w", err)
249249
}
@@ -253,7 +253,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) error {
253253
}
254254
_ = committer.Close()
255255

256-
cleanup()
256+
postTxActions()
257257

258258
if err = asymkey_service.RewriteAllPublicKeys(ctx); err != nil {
259259
return err

0 commit comments

Comments
 (0)