mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-25 17:44:32 +02:00 
			
		
		
		
	Repo Activity: count new issues that were closed (#31776)
I'm new to go and contributing to gitea, your guidance is much appreciated. This is meant to solve https://github.com/go-gitea/gitea/issues/13309 Previously, closed issues would not be shown under new issues in the activity tab, even if they were newly created. changes: * Split out newlyCreatedIssues from issuesForActivityStatement to count both currently open and closed issues. * Use a seperate function to count active issues to prevent double-counting issues after the above change. Result is that new issues that have been closed are shown both under "new" and "closed". Signed-off-by: Timon van der Berg <tmnvanderberg@gmail.com>
This commit is contained in:
		
							parent
							
								
									f58a43f60a
								
							
						
					
					
						commit
						ebfde84529
					
				| @ -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 | ||||
| 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). | ||||
| 		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) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user