1
0
Fork 0
forked from forgejo/forgejo

[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:
6543 2021-08-12 14:43:08 +02:00 committed by GitHub
parent ca13e1d56c
commit 2289580bb7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
88 changed files with 637 additions and 329 deletions

View file

@ -380,24 +380,33 @@ type GetMilestonesOption struct {
SortType string
}
// GetMilestones returns milestones filtered by GetMilestonesOption's
func GetMilestones(opts GetMilestonesOption) (MilestoneList, error) {
sess := x.Where("repo_id = ?", opts.RepoID)
func (opts GetMilestonesOption) toCond() builder.Cond {
cond := builder.NewCond()
if opts.RepoID != 0 {
cond = cond.And(builder.Eq{"repo_id": opts.RepoID})
}
switch opts.State {
case api.StateClosed:
sess = sess.And("is_closed = ?", true)
cond = cond.And(builder.Eq{"is_closed": true})
case api.StateAll:
break
// api.StateOpen:
default:
sess = sess.And("is_closed = ?", false)
cond = cond.And(builder.Eq{"is_closed": false})
}
if len(opts.Name) != 0 {
sess = sess.And(builder.Like{"name", opts.Name})
cond = cond.And(builder.Like{"name", opts.Name})
}
return cond
}
// GetMilestones returns milestones filtered by GetMilestonesOption's
func GetMilestones(opts GetMilestonesOption) (MilestoneList, int64, error) {
sess := x.Where(opts.toCond())
if opts.Page != 0 {
sess = opts.setSessionPagination(sess)
}
@ -420,7 +429,8 @@ func GetMilestones(opts GetMilestonesOption) (MilestoneList, error) {
}
miles := make([]*Milestone, 0, opts.PageSize)
return miles, sess.Find(&miles)
total, err := sess.FindAndCount(&miles)
return miles, total, err
}
// SearchMilestones search milestones