Fix repository's pull request count error (#7518)
* fix pr count error * fix tests
This commit is contained in:
parent
f9d6e35a8a
commit
e0d6d2f978
3 changed files with 38 additions and 12 deletions
|
@ -1849,3 +1849,22 @@ func (issue *Issue) BlockedByDependencies() ([]*Issue, error) {
|
||||||
func (issue *Issue) BlockingDependencies() ([]*Issue, error) {
|
func (issue *Issue) BlockingDependencies() ([]*Issue, error) {
|
||||||
return issue.getBlockingDependencies(x)
|
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
|
act.OpType = ActionReopenPullRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.Issue.IsPull {
|
if err = opts.Issue.updateClosedNum(e); err != nil {
|
||||||
_, 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 {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,12 +644,7 @@ func sendCreateCommentAction(e *xorm.Session, opts *CreateCommentOptions, commen
|
||||||
act.OpType = ActionClosePullRequest
|
act.OpType = ActionClosePullRequest
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.Issue.IsPull {
|
if err = opts.Issue.updateClosedNum(e); err != nil {
|
||||||
_, 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 {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2311,6 +2311,23 @@ func CheckRepoStats() {
|
||||||
}
|
}
|
||||||
// ***** END: Repository.NumClosedIssues *****
|
// ***** 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.
|
// FIXME: use checker when stop supporting old fork repo format.
|
||||||
// ***** START: Repository.NumForks *****
|
// ***** 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)")
|
results, err = x.Query("SELECT repo.id FROM `repository` repo WHERE repo.num_forks!=(SELECT COUNT(*) FROM `repository` WHERE fork_id=repo.id)")
|
||||||
|
|
Loading…
Reference in a new issue