mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	[API] generalize list header (#16551)
* Add info about list endpoints to CONTRIBUTING.md * Let all list endpoints return X-Total-Count header * Add TODOs for GetCombinedCommitStatusByRef * Fix models/issue_stopwatch.go * Rrefactor models.ListDeployKeys * Introduce helper func and use them for SetLinkHeader related func
This commit is contained in:
		@@ -79,8 +79,8 @@ type FindTrackedTimesOptions struct {
 | 
			
		||||
	CreatedBeforeUnix int64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ToCond will convert each condition into a xorm-Cond
 | 
			
		||||
func (opts *FindTrackedTimesOptions) ToCond() builder.Cond {
 | 
			
		||||
// toCond will convert each condition into a xorm-Cond
 | 
			
		||||
func (opts *FindTrackedTimesOptions) toCond() builder.Cond {
 | 
			
		||||
	cond := builder.NewCond().And(builder.Eq{"tracked_time.deleted": false})
 | 
			
		||||
	if opts.IssueID != 0 {
 | 
			
		||||
		cond = cond.And(builder.Eq{"issue_id": opts.IssueID})
 | 
			
		||||
@@ -103,14 +103,14 @@ func (opts *FindTrackedTimesOptions) ToCond() builder.Cond {
 | 
			
		||||
	return cond
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ToSession will convert the given options to a xorm Session by using the conditions from ToCond and joining with issue table if required
 | 
			
		||||
func (opts *FindTrackedTimesOptions) ToSession(e Engine) Engine {
 | 
			
		||||
// toSession will convert the given options to a xorm Session by using the conditions from toCond and joining with issue table if required
 | 
			
		||||
func (opts *FindTrackedTimesOptions) toSession(e Engine) Engine {
 | 
			
		||||
	sess := e
 | 
			
		||||
	if opts.RepositoryID > 0 || opts.MilestoneID > 0 {
 | 
			
		||||
		sess = e.Join("INNER", "issue", "issue.id = tracked_time.issue_id")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sess = sess.Where(opts.ToCond())
 | 
			
		||||
	sess = sess.Where(opts.toCond())
 | 
			
		||||
 | 
			
		||||
	if opts.Page != 0 {
 | 
			
		||||
		sess = opts.setEnginePagination(sess)
 | 
			
		||||
@@ -119,18 +119,27 @@ func (opts *FindTrackedTimesOptions) ToSession(e Engine) Engine {
 | 
			
		||||
	return sess
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getTrackedTimes(e Engine, options FindTrackedTimesOptions) (trackedTimes TrackedTimeList, err error) {
 | 
			
		||||
	err = options.ToSession(e).Find(&trackedTimes)
 | 
			
		||||
func getTrackedTimes(e Engine, options *FindTrackedTimesOptions) (trackedTimes TrackedTimeList, err error) {
 | 
			
		||||
	err = options.toSession(e).Find(&trackedTimes)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetTrackedTimes returns all tracked times that fit to the given options.
 | 
			
		||||
func GetTrackedTimes(opts FindTrackedTimesOptions) (TrackedTimeList, error) {
 | 
			
		||||
func GetTrackedTimes(opts *FindTrackedTimesOptions) (TrackedTimeList, error) {
 | 
			
		||||
	return getTrackedTimes(x, opts)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CountTrackedTimes returns count of tracked times that fit to the given options.
 | 
			
		||||
func CountTrackedTimes(opts *FindTrackedTimesOptions) (int64, error) {
 | 
			
		||||
	sess := x.Where(opts.toCond())
 | 
			
		||||
	if opts.RepositoryID > 0 || opts.MilestoneID > 0 {
 | 
			
		||||
		sess = sess.Join("INNER", "issue", "issue.id = tracked_time.issue_id")
 | 
			
		||||
	}
 | 
			
		||||
	return sess.Count(&TrackedTime{})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getTrackedSeconds(e Engine, opts FindTrackedTimesOptions) (trackedSeconds int64, err error) {
 | 
			
		||||
	return opts.ToSession(e).SumInt(&TrackedTime{}, "time")
 | 
			
		||||
	return opts.toSession(e).SumInt(&TrackedTime{}, "time")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetTrackedSeconds return sum of seconds
 | 
			
		||||
@@ -188,7 +197,7 @@ func addTime(e Engine, user *User, issue *Issue, amount int64, created time.Time
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TotalTimes returns the spent time for each user by an issue
 | 
			
		||||
func TotalTimes(options FindTrackedTimesOptions) (map[*User]string, error) {
 | 
			
		||||
func TotalTimes(options *FindTrackedTimesOptions) (map[*User]string, error) {
 | 
			
		||||
	trackedTimes, err := GetTrackedTimes(options)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -288,7 +297,7 @@ func deleteTimes(e Engine, opts FindTrackedTimesOptions) (removedTime int64, err
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err = opts.ToSession(e).Table("tracked_time").Cols("deleted").Update(&TrackedTime{Deleted: true})
 | 
			
		||||
	_, err = opts.toSession(e).Table("tracked_time").Cols("deleted").Update(&TrackedTime{Deleted: true})
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user