Check ignored errors for issue and milestone count (#3213)
This commit is contained in:
		
					parent
					
						
							
								9a0e2a8b07
							
						
					
				
			
			
				commit
				
					
						0e384c6376
					
				
			
		
					 3 changed files with 57 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -165,31 +165,33 @@ func UpdateMilestone(m *Milestone) error {
 | 
			
		|||
	return updateMilestone(x, m)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func countRepoMilestones(e Engine, repoID int64) int64 {
 | 
			
		||||
	count, _ := e.
 | 
			
		||||
func countRepoMilestones(e Engine, repoID int64) (int64, error) {
 | 
			
		||||
	return e.
 | 
			
		||||
		Where("repo_id=?", repoID).
 | 
			
		||||
		Count(new(Milestone))
 | 
			
		||||
	return count
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func countRepoClosedMilestones(e Engine, repoID int64) int64 {
 | 
			
		||||
	closed, _ := e.
 | 
			
		||||
func countRepoClosedMilestones(e Engine, repoID int64) (int64, error) {
 | 
			
		||||
	return e.
 | 
			
		||||
		Where("repo_id=? AND is_closed=?", repoID, true).
 | 
			
		||||
		Count(new(Milestone))
 | 
			
		||||
	return closed
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CountRepoClosedMilestones returns number of closed milestones in given repository.
 | 
			
		||||
func CountRepoClosedMilestones(repoID int64) int64 {
 | 
			
		||||
func CountRepoClosedMilestones(repoID int64) (int64, error) {
 | 
			
		||||
	return countRepoClosedMilestones(x, repoID)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MilestoneStats returns number of open and closed milestones of given repository.
 | 
			
		||||
func MilestoneStats(repoID int64) (open int64, closed int64) {
 | 
			
		||||
	open, _ = x.
 | 
			
		||||
func MilestoneStats(repoID int64) (open int64, closed int64, err error) {
 | 
			
		||||
	open, err = x.
 | 
			
		||||
		Where("repo_id=? AND is_closed=?", repoID, false).
 | 
			
		||||
		Count(new(Milestone))
 | 
			
		||||
	return open, CountRepoClosedMilestones(repoID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, 0, nil
 | 
			
		||||
	}
 | 
			
		||||
	closed, err = CountRepoClosedMilestones(repoID)
 | 
			
		||||
	return open, closed, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ChangeMilestoneStatus changes the milestone open/closed status.
 | 
			
		||||
| 
						 | 
				
			
			@ -210,8 +212,17 @@ func ChangeMilestoneStatus(m *Milestone, isClosed bool) (err error) {
 | 
			
		|||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
 | 
			
		||||
	repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
 | 
			
		||||
	numMilestones, err := countRepoMilestones(sess, repo.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	numClosedMilestones, err := countRepoClosedMilestones(sess, repo.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	repo.NumMilestones = int(numMilestones)
 | 
			
		||||
	repo.NumClosedMilestones = int(numClosedMilestones)
 | 
			
		||||
 | 
			
		||||
	if _, err = sess.ID(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -324,8 +335,17 @@ func DeleteMilestoneByRepoID(repoID, id int64) error {
 | 
			
		|||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	repo.NumMilestones = int(countRepoMilestones(sess, repo.ID))
 | 
			
		||||
	repo.NumClosedMilestones = int(countRepoClosedMilestones(sess, repo.ID))
 | 
			
		||||
	numMilestones, err := countRepoMilestones(sess, repo.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	numClosedMilestones, err := countRepoClosedMilestones(sess, repo.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	repo.NumMilestones = int(numMilestones)
 | 
			
		||||
	repo.NumClosedMilestones = int(numClosedMilestones)
 | 
			
		||||
 | 
			
		||||
	if _, err = sess.ID(repo.ID).Cols("num_milestones, num_closed_milestones").Update(repo); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -146,31 +146,42 @@ func TestCountRepoMilestones(t *testing.T) {
 | 
			
		|||
	assert.NoError(t, PrepareTestDatabase())
 | 
			
		||||
	test := func(repoID int64) {
 | 
			
		||||
		repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
 | 
			
		||||
		assert.EqualValues(t, repo.NumMilestones, countRepoMilestones(x, repoID))
 | 
			
		||||
		count, err := countRepoMilestones(x, repoID)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		assert.EqualValues(t, repo.NumMilestones, count)
 | 
			
		||||
	}
 | 
			
		||||
	test(1)
 | 
			
		||||
	test(2)
 | 
			
		||||
	test(3)
 | 
			
		||||
	assert.EqualValues(t, 0, countRepoMilestones(x, NonexistentID))
 | 
			
		||||
 | 
			
		||||
	count, err := countRepoMilestones(x, NonexistentID)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.EqualValues(t, 0, count)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestCountRepoClosedMilestones(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, PrepareTestDatabase())
 | 
			
		||||
	test := func(repoID int64) {
 | 
			
		||||
		repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
 | 
			
		||||
		assert.EqualValues(t, repo.NumClosedMilestones, CountRepoClosedMilestones(repoID))
 | 
			
		||||
		count, err := CountRepoClosedMilestones(repoID)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		assert.EqualValues(t, repo.NumClosedMilestones, count)
 | 
			
		||||
	}
 | 
			
		||||
	test(1)
 | 
			
		||||
	test(2)
 | 
			
		||||
	test(3)
 | 
			
		||||
	assert.EqualValues(t, 0, countRepoMilestones(x, NonexistentID))
 | 
			
		||||
 | 
			
		||||
	count, err := CountRepoClosedMilestones(NonexistentID)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.EqualValues(t, 0, count)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestMilestoneStats(t *testing.T) {
 | 
			
		||||
	assert.NoError(t, PrepareTestDatabase())
 | 
			
		||||
	test := func(repoID int64) {
 | 
			
		||||
		repo := AssertExistsAndLoadBean(t, &Repository{ID: repoID}).(*Repository)
 | 
			
		||||
		open, closed := MilestoneStats(repoID)
 | 
			
		||||
		open, closed, err := MilestoneStats(repoID)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		assert.EqualValues(t, repo.NumMilestones-repo.NumClosedMilestones, open)
 | 
			
		||||
		assert.EqualValues(t, repo.NumClosedMilestones, closed)
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -178,7 +189,8 @@ func TestMilestoneStats(t *testing.T) {
 | 
			
		|||
	test(2)
 | 
			
		||||
	test(3)
 | 
			
		||||
 | 
			
		||||
	open, closed := MilestoneStats(NonexistentID)
 | 
			
		||||
	open, closed, err := MilestoneStats(NonexistentID)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.EqualValues(t, 0, open)
 | 
			
		||||
	assert.EqualValues(t, 0, closed)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1067,7 +1067,11 @@ func Milestones(ctx *context.Context) {
 | 
			
		|||
	ctx.Data["PageIsMilestones"] = true
 | 
			
		||||
 | 
			
		||||
	isShowClosed := ctx.Query("state") == "closed"
 | 
			
		||||
	openCount, closedCount := models.MilestoneStats(ctx.Repo.Repository.ID)
 | 
			
		||||
	openCount, closedCount, err := models.MilestoneStats(ctx.Repo.Repository.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.Handle(500, "MilestoneStats", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Data["OpenCount"] = openCount
 | 
			
		||||
	ctx.Data["ClosedCount"] = closedCount
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue