Skip to content

Commit a27061e

Browse files
committed
improvements
1 parent 3454c09 commit a27061e

File tree

5 files changed

+40
-26
lines changed

5 files changed

+40
-26
lines changed

models/actions/run_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package actions
66
import (
77
"testing"
88

9+
"code.gitea.io/gitea/models/db"
910
repo_model "code.gitea.io/gitea/models/repo"
1011
"code.gitea.io/gitea/models/unittest"
1112

@@ -15,11 +16,18 @@ import (
1516
func TestUpdateRepoRunsNumbers(t *testing.T) {
1617
assert.NoError(t, unittest.PrepareTestDatabase())
1718

19+
// update the number to a wrong one, the original is 3
20+
_, err := db.GetEngine(t.Context()).ID(4).Cols("num_closed_action_runs").Update(&repo_model.Repository{
21+
NumClosedActionRuns: 2,
22+
})
23+
assert.NoError(t, err)
24+
1825
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4})
1926
assert.Equal(t, 4, repo.NumActionRuns)
2027
assert.Equal(t, 2, repo.NumClosedActionRuns)
2128

22-
err := UpdateRepoRunsNumbers(t.Context(), repo)
29+
// now update will correct them, only num_actionr_runs and num_closed_action_runs should be updated
30+
err = UpdateRepoRunsNumbers(t.Context(), repo)
2331
assert.NoError(t, err)
2432
repo = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 4})
2533
assert.Equal(t, 4, repo.NumActionRuns)

models/fixtures/repository.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
num_projects: 0
112112
num_closed_projects: 1
113113
num_action_runs: 4
114-
num_closed_action_runs: 2 # this is wrong, should be 3. It's for testing purpose of run_test.go
114+
num_closed_action_runs: 3
115115
is_private: false
116116
is_empty: false
117117
is_archived: false

models/issues/comment.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,7 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment
862862
if err = UpdateCommentAttachments(ctx, comment, opts.Attachments); err != nil {
863863
return err
864864
}
865+
// comment type reopen and close event have their own logic to update numbers but not here
865866
}
866867
// update the issue's updated_unix column
867868
return UpdateIssueCols(ctx, opts.Issue, "updated_unix")

models/issues/issue_update.go

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,19 @@ func updateIssueNumbers(ctx context.Context, issue *Issue, doer *user_model.User
145145
}
146146
}
147147

148-
colName := util.Iif(issue.IsPull, "num_closed_pulls", "num_closed_issues")
149-
dbSession := db.GetEngine(ctx)
150148
// update repository's issue closed number
151149
switch cmtType {
152150
case CommentTypeClose, CommentTypeMergePull:
153-
dbSession.Incr(colName)
151+
if err := DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, false); err != nil {
152+
return nil, err
153+
}
154154
case CommentTypeReopen:
155-
dbSession.Decr(colName)
155+
if err := IncrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull); err != nil {
156+
return nil, err
157+
}
156158
default:
157159
return nil, fmt.Errorf("invalid comment type: %d", cmtType)
158160
}
159-
if _, err := dbSession.ID(issue.RepoID).
160-
NoAutoCondition().NoAutoTime().
161-
Update(new(repo_model.Repository)); err != nil {
162-
return nil, err
163-
}
164161

165162
return CreateComment(ctx, &CreateCommentOptions{
166163
Type: cmtType,
@@ -381,10 +378,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
381378
}
382379

383380
// Update repository issue count
384-
colName := util.Iif(opts.Issue.IsPull, "num_pulls", "num_issues")
385-
if _, err := db.GetEngine(ctx).Incr(colName).ID(opts.Repo.ID).
386-
NoAutoCondition().NoAutoTime().
387-
Update(new(repo_model.Repository)); err != nil {
381+
if err := IncrRepoIssueNumbers(ctx, opts.Repo.ID, opts.Issue.IsPull); err != nil {
388382
return err
389383
}
390384

@@ -454,6 +448,27 @@ func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, la
454448
})
455449
}
456450

451+
func IncrRepoIssueNumbers(ctx context.Context, repoID int64, isPull bool) error {
452+
colName := util.Iif(isPull, "num_pulls", "num_issues")
453+
_, err := db.GetEngine(ctx).Incr(colName).ID(repoID).
454+
NoAutoCondition().NoAutoTime().
455+
Update(new(repo_model.Repository))
456+
return err
457+
}
458+
459+
func DecrRepoIssueNumbers(ctx context.Context, repoID int64, isPull, includeTotal bool) error {
460+
closedColName := util.Iif(isPull, "num_closed_pulls", "num_closed_issues")
461+
dbSession := db.GetEngine(ctx).Decr(closedColName)
462+
if includeTotal {
463+
colName := util.Iif(isPull, "num_pulls", "num_issues")
464+
dbSession = dbSession.Decr(colName)
465+
}
466+
_, err := dbSession.ID(repoID).
467+
NoAutoCondition().NoAutoTime().
468+
Update(new(repo_model.Repository))
469+
return err
470+
}
471+
457472
// UpdateIssueMentions updates issue-user relations for mentioned users.
458473
func UpdateIssueMentions(ctx context.Context, issueID int64, mentions []*user_model.User) error {
459474
if len(mentions) == 0 {

services/issue/issue.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"code.gitea.io/gitea/modules/gitrepo"
2121
"code.gitea.io/gitea/modules/log"
2222
"code.gitea.io/gitea/modules/storage"
23-
"code.gitea.io/gitea/modules/util"
2423
notify_service "code.gitea.io/gitea/services/notify"
2524
)
2625

@@ -271,16 +270,7 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
271270
return nil, err
272271
}
273272

274-
colName := util.Iif(issue.IsPull, "num_pulls", "num_issues")
275-
closedColName := util.Iif(issue.IsPull, "num_closed_pulls", "num_closed_issues")
276-
dbSession := db.GetEngine(ctx)
277-
if issue.IsClosed {
278-
dbSession.Decr(closedColName)
279-
}
280-
// update repository's issue both total number and closed number
281-
if _, err := dbSession.ID(issue.RepoID).Decr(colName).
282-
NoAutoCondition().NoAutoTime().
283-
Update(new(repo_model.Repository)); err != nil {
273+
if err := issues_model.DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, true); err != nil {
284274
return nil, err
285275
}
286276

0 commit comments

Comments
 (0)