@@ -34,6 +34,7 @@ type ActivityStats struct {
3434 OpenedPRAuthorCount int64
3535 MergedPRs issues_model.PullRequestList
3636 MergedPRAuthorCount int64
37+ ActiveIssues issues_model.IssueList
3738 OpenedIssues issues_model.IssueList
3839 OpenedIssueAuthorCount int64
3940 ClosedIssues issues_model.IssueList
@@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int {
172173
173174// ActiveIssueCount returns total active issue count
174175func (stats * ActivityStats ) ActiveIssueCount () int {
175- return stats . OpenedIssueCount () + stats .ClosedIssueCount ( )
176+ return len ( stats .ActiveIssues )
176177}
177178
178179// OpenedIssueCount returns open issue count
@@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi
285286 stats .ClosedIssueAuthorCount = count
286287
287288 // New issues
288- sess = issuesForActivityStatement (ctx , repoID , fromTime , false , false )
289+ sess = newlyCreatedIssues (ctx , repoID , fromTime )
289290 sess .OrderBy ("issue.created_unix ASC" )
290291 stats .OpenedIssues = make (issues_model.IssueList , 0 )
291292 if err = sess .Find (& stats .OpenedIssues ); err != nil {
292293 return err
293294 }
294295
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+
295304 // Opened issue authors
296305 sess = issuesForActivityStatement (ctx , repoID , fromTime , false , false )
297306 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
317326 return sess .Find (& stats .UnresolvedIssues )
318327}
319328
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+
320346func issuesForActivityStatement (ctx context.Context , repoID int64 , fromTime time.Time , closed , unresolved bool ) * xorm.Session {
321347 sess := db .GetEngine (ctx ).Where ("issue.repo_id = ?" , repoID ).
322348 And ("issue.is_closed = ?" , closed )
0 commit comments