Skip to content

Commit d955803

Browse files
committed
Fix bug
1 parent a27061e commit d955803

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

models/issues/issue_update.go

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,13 @@ func updateIssueNumbers(ctx context.Context, issue *Issue, doer *user_model.User
148148
// update repository's issue closed number
149149
switch cmtType {
150150
case CommentTypeClose, CommentTypeMergePull:
151-
if err := DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, false); err != nil {
151+
// only increase closed count
152+
if err := IncrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, false); err != nil {
152153
return nil, err
153154
}
154155
case CommentTypeReopen:
155-
if err := IncrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull); err != nil {
156+
// only decrease closed count
157+
if err := DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, false, true); err != nil {
156158
return nil, err
157159
}
158160
default:
@@ -377,8 +379,8 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
377379
}
378380
}
379381

380-
// Update repository issue count
381-
if err := IncrRepoIssueNumbers(ctx, opts.Repo.ID, opts.Issue.IsPull); err != nil {
382+
// Update repository issue total count
383+
if err := IncrRepoIssueNumbers(ctx, opts.Repo.ID, opts.Issue.IsPull, true); err != nil {
382384
return err
383385
}
384386

@@ -448,21 +450,36 @@ func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, la
448450
})
449451
}
450452

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).
453+
// IncrRepoIssueNumbers increments repository issue numbers.
454+
func IncrRepoIssueNumbers(ctx context.Context, repoID int64, isPull bool, totalOrClosed bool) error {
455+
dbSession := db.GetEngine(ctx)
456+
var colName string
457+
if totalOrClosed {
458+
colName = util.Iif(isPull, "num_pulls", "num_issues")
459+
} else {
460+
colName = util.Iif(isPull, "num_closed_pulls", "num_closed_issues")
461+
}
462+
_, err := dbSession.Incr(colName).ID(repoID).
454463
NoAutoCondition().NoAutoTime().
455464
Update(new(repo_model.Repository))
456465
return err
457466
}
458467

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)
468+
// DecrRepoIssueNumbers decrements repository issue numbers.
469+
func DecrRepoIssueNumbers(ctx context.Context, repoID int64, isPull, includeTotal, includeClosed bool) error {
470+
if !includeTotal && !includeClosed {
471+
return fmt.Errorf("no numbers to decrease for repo id %d", repoID)
472+
}
473+
474+
dbSession := db.GetEngine(ctx)
462475
if includeTotal {
463476
colName := util.Iif(isPull, "num_pulls", "num_issues")
464477
dbSession = dbSession.Decr(colName)
465478
}
479+
if includeClosed {
480+
closedColName := util.Iif(isPull, "num_closed_pulls", "num_closed_issues")
481+
dbSession = dbSession.Decr(closedColName)
482+
}
466483
_, err := dbSession.ID(repoID).
467484
NoAutoCondition().NoAutoTime().
468485
Update(new(repo_model.Repository))

services/issue/issue.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro
270270
return nil, err
271271
}
272272

273-
if err := issues_model.DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, true); err != nil {
273+
if err := issues_model.DecrRepoIssueNumbers(ctx, issue.RepoID, issue.IsPull, true, issue.IsClosed); err != nil {
274274
return nil, err
275275
}
276276

0 commit comments

Comments
 (0)