* fix pr count error * fix teststags/v1.10.0-rc1
@@ -1849,3 +1849,22 @@ func (issue *Issue) BlockedByDependencies() ([]*Issue, error) { | |||
func (issue *Issue) BlockingDependencies() ([]*Issue, error) { | |||
return issue.getBlockingDependencies(x) | |||
} | |||
func (issue *Issue) updateClosedNum(e Engine) (err error) { | |||
if issue.IsPull { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=(SELECT count(*) FROM issue WHERE repo_id=? AND is_pull=? AND is_closed=?) WHERE id=?", | |||
issue.RepoID, | |||
true, | |||
true, | |||
issue.RepoID, | |||
) | |||
} else { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_issues=(SELECT count(*) FROM issue WHERE repo_id=? AND is_pull=? AND is_closed=?) WHERE id=?", | |||
issue.RepoID, | |||
false, | |||
true, | |||
issue.RepoID, | |||
) | |||
} | |||
return | |||
} |
@@ -634,12 +634,7 @@ func sendCreateCommentAction(e *xorm.Session, opts *CreateCommentOptions, commen | |||
act.OpType = ActionReopenPullRequest | |||
} | |||
if opts.Issue.IsPull { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls-1 WHERE id=?", opts.Repo.ID) | |||
} else { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_issues=num_closed_issues-1 WHERE id=?", opts.Repo.ID) | |||
} | |||
if err != nil { | |||
if err = opts.Issue.updateClosedNum(e); err != nil { | |||
return err | |||
} | |||
@@ -649,12 +644,7 @@ func sendCreateCommentAction(e *xorm.Session, opts *CreateCommentOptions, commen | |||
act.OpType = ActionClosePullRequest | |||
} | |||
if opts.Issue.IsPull { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_pulls=num_closed_pulls+1 WHERE id=?", opts.Repo.ID) | |||
} else { | |||
_, err = e.Exec("UPDATE `repository` SET num_closed_issues=num_closed_issues+1 WHERE id=?", opts.Repo.ID) | |||
} | |||
if err != nil { | |||
if err = opts.Issue.updateClosedNum(e); err != nil { | |||
return err | |||
} | |||
} |
@@ -2311,6 +2311,23 @@ func CheckRepoStats() { | |||
} | |||
// ***** END: Repository.NumClosedIssues ***** | |||
// ***** START: Repository.NumClosedPulls ***** | |||
desc = "repository count 'num_closed_pulls'" | |||
results, err = x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_pulls!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, true) | |||
if err != nil { | |||
log.Error("Select %s: %v", desc, err) | |||
} else { | |||
for _, result := range results { | |||
id := com.StrTo(result["id"]).MustInt64() | |||
log.Trace("Updating %s: %d", desc, id) | |||
_, err = x.Exec("UPDATE `repository` SET num_closed_pulls=(SELECT COUNT(*) FROM `issue` WHERE repo_id=? AND is_closed=? AND is_pull=?) WHERE id=?", id, true, true, id) | |||
if err != nil { | |||
log.Error("Update %s[%d]: %v", desc, id, err) | |||
} | |||
} | |||
} | |||
// ***** END: Repository.NumClosedPulls ***** | |||
// FIXME: use checker when stop supporting old fork repo format. | |||
// ***** START: Repository.NumForks ***** | |||
results, err = x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_forks!=(SELECT COUNT(*) FROM `repository` WHERE fork_id=repo.id)") |