-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Repo Activity: count new issues that were closed #31776
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
0b4494a
51d8eca
0c7e9f9
a84f19d
99cc6bb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,6 +34,7 @@ type ActivityStats struct { | |
OpenedPRAuthorCount int64 | ||
MergedPRs issues_model.PullRequestList | ||
MergedPRAuthorCount int64 | ||
ActiveIssues issues_model.IssueList | ||
OpenedIssues issues_model.IssueList | ||
OpenedIssueAuthorCount int64 | ||
ClosedIssues issues_model.IssueList | ||
|
@@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int { | |
|
||
// ActiveIssueCount returns total active issue count | ||
tmnvanderberg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
func (stats *ActivityStats) ActiveIssueCount() int { | ||
return stats.OpenedIssueCount() + stats.ClosedIssueCount() | ||
return len(stats.ActiveIssues) | ||
} | ||
|
||
// OpenedIssueCount returns open issue count | ||
|
@@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi | |
stats.ClosedIssueAuthorCount = count | ||
|
||
// New issues | ||
sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false) | ||
sess = newlyCreatedIssues(ctx, repoID, fromTime) | ||
sess.OrderBy("issue.created_unix ASC") | ||
stats.OpenedIssues = make(issues_model.IssueList, 0) | ||
if err = sess.Find(&stats.OpenedIssues); err != nil { | ||
return err | ||
} | ||
|
||
// Active issues | ||
sess = activeIssues(ctx, repoID, fromTime) | ||
sess.OrderBy("issue.created_unix ASC") | ||
stats.ActiveIssues = make(issues_model.IssueList, 0) | ||
if err = sess.Find(&stats.ActiveIssues); err != nil { | ||
return err | ||
} | ||
|
||
// Opened issue authors | ||
sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false) | ||
if _, err = sess.Select("count(distinct issue.poster_id) as `count`").Table("issue").Get(&count); err != nil { | ||
|
@@ -317,6 +326,23 @@ func (stats *ActivityStats) FillUnresolvedIssues(ctx context.Context, repoID int | |
return sess.Find(&stats.UnresolvedIssues) | ||
} | ||
|
||
func newlyCreatedIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session { | ||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). | ||
And("issue.is_pull = ?", false). // Retain the is_pull check to exclude pull requests | ||
And("issue.created_unix >= ?", fromTime.Unix()) // Include all issues created after fromTime | ||
|
||
return sess | ||
} | ||
|
||
func activeIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session { | ||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). | ||
And("issue.is_pull = ?", false). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am a bit confused, in the issue it explicitly states:
but they are excluded right now? Apart from that, LGTM. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You're right, pull requests suffer from the same problem. So this fix is only for part of the problem affecting the issue counts. However, that is unrelated to this code snippet which is counting issues, and hence should filter out pull requets. If this PR is approved I will be happy to submit a similar fix for pull requests. |
||
And("issue.created_unix >= ?", fromTime.Unix()). | ||
Or("issue.closed_unix >= ?", fromTime.Unix()) | ||
|
||
return sess | ||
} | ||
|
||
func issuesForActivityStatement(ctx context.Context, repoID int64, fromTime time.Time, closed, unresolved bool) *xorm.Session { | ||
sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). | ||
And("issue.is_closed = ?", closed) | ||
|
Uh oh!
There was an error while loading. Please reload this page.