@@ -34,6 +34,7 @@ type ActivityStats struct {
34
34
OpenedPRAuthorCount int64
35
35
MergedPRs issues_model.PullRequestList
36
36
MergedPRAuthorCount int64
37
+ ActiveIssues issues_model.IssueList
37
38
OpenedIssues issues_model.IssueList
38
39
OpenedIssueAuthorCount int64
39
40
ClosedIssues issues_model.IssueList
@@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int {
172
173
173
174
// ActiveIssueCount returns total active issue count
174
175
func (stats * ActivityStats ) ActiveIssueCount () int {
175
- return stats . OpenedIssueCount () + stats .ClosedIssueCount ( )
176
+ return len ( stats .ActiveIssues )
176
177
}
177
178
178
179
// OpenedIssueCount returns open issue count
@@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi
285
286
stats .ClosedIssueAuthorCount = count
286
287
287
288
// New issues
288
- sess = issuesForActivityStatement (ctx , repoID , fromTime , false , false )
289
+ sess = newlyCreatedIssues (ctx , repoID , fromTime )
289
290
sess .OrderBy ("issue.created_unix ASC" )
290
291
stats .OpenedIssues = make (issues_model.IssueList , 0 )
291
292
if err = sess .Find (& stats .OpenedIssues ); err != nil {
292
293
return err
293
294
}
294
295
296
+ // Active issues
297
+ sess = activeIssues (ctx , repoID , fromTime )
298
+ sess .OrderBy ("issue.created_unix ASC" )
299
+ stats .ActiveIssues = make (issues_model.IssueList , 0 )
300
+ if err = sess .Find (& stats .ActiveIssues ); err != nil {
301
+ return err
302
+ }
303
+
295
304
// Opened issue authors
296
305
sess = issuesForActivityStatement (ctx , repoID , fromTime , false , false )
297
306
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
317
326
return sess .Find (& stats .UnresolvedIssues )
318
327
}
319
328
329
+ func newlyCreatedIssues (ctx context.Context , repoID int64 , fromTime time.Time ) * xorm.Session {
330
+ sess := db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
331
+ And ("issue.is_pull = ?" , false ). // Retain the is_pull check to exclude pull requests
332
+ And ("issue.created_unix >= ?" , fromTime .Unix ()) // Include all issues created after fromTime
333
+
334
+ return sess
335
+ }
336
+
337
+ func activeIssues (ctx context.Context , repoID int64 , fromTime time.Time ) * xorm.Session {
338
+ sess := db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
339
+ And ("issue.is_pull = ?" , false ).
340
+ And ("issue.created_unix >= ?" , fromTime .Unix ()).
341
+ Or ("issue.closed_unix >= ?" , fromTime .Unix ())
342
+
343
+ return sess
344
+ }
345
+
320
346
func issuesForActivityStatement (ctx context.Context , repoID int64 , fromTime time.Time , closed , unresolved bool ) * xorm.Session {
321
347
sess := db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
322
348
And ("issue.is_closed = ?" , closed )
0 commit comments