Merge pull request #2331 from jbrockopp/master

Build List Pagination
This commit is contained in:
Brad Rydzewski 2018-02-19 14:01:33 -08:00 committed by GitHub
commit cef20f0476
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 9 deletions

View file

@ -72,7 +72,7 @@ func GetCC(c *gin.Context) {
return return
} }
builds, err := store.GetBuildList(c, repo) builds, err := store.GetBuildList(c, repo, 1)
if err != nil || len(builds) == 0 { if err != nil || len(builds) == 0 {
c.AbortWithStatus(404) c.AbortWithStatus(404)
return return

View file

@ -25,7 +25,13 @@ import (
func GetBuilds(c *gin.Context) { func GetBuilds(c *gin.Context) {
repo := session.Repo(c) repo := session.Repo(c)
builds, err := store.GetBuildList(c, repo) page, err := strconv.Atoi(c.DefaultQuery("page", "1"))
if err != nil {
c.AbortWithError(http.StatusBadRequest, err)
return
}
builds, err := store.GetBuildList(c, repo, page)
if err != nil { if err != nil {
c.AbortWithStatus(http.StatusInternalServerError) c.AbortWithStatus(http.StatusInternalServerError)
return return

View file

@ -45,9 +45,9 @@ func (db *datastore) GetBuildLastBefore(repo *model.Repo, branch string, num int
return build, err return build, err
} }
func (db *datastore) GetBuildList(repo *model.Repo) ([]*model.Build, error) { func (db *datastore) GetBuildList(repo *model.Repo, page int) ([]*model.Build, error) {
var builds = []*model.Build{} var builds = []*model.Build{}
var err = meddler.QueryAll(db, &builds, rebind(buildListQuery), repo.ID) var err = meddler.QueryAll(db, &builds, rebind(buildListQuery), repo.ID, 50*(page-1))
return builds, err return builds, err
} }
@ -130,7 +130,7 @@ SELECT *
FROM builds FROM builds
WHERE build_repo_id = ? WHERE build_repo_id = ?
ORDER BY build_number DESC ORDER BY build_number DESC
LIMIT 50 LIMIT 50 OFFSET ?
` `
const buildNumberQuery = ` const buildNumberQuery = `

View file

@ -247,7 +247,7 @@ func TestBuilds(t *testing.T) {
} }
s.CreateBuild(build1, []*model.Proc{}...) s.CreateBuild(build1, []*model.Proc{}...)
s.CreateBuild(build2, []*model.Proc{}...) s.CreateBuild(build2, []*model.Proc{}...)
builds, err := s.GetBuildList(&model.Repo{ID: 1}) builds, err := s.GetBuildList(&model.Repo{ID: 1}, 1)
g.Assert(err == nil).IsTrue() g.Assert(err == nil).IsTrue()
g.Assert(len(builds)).Equal(2) g.Assert(len(builds)).Equal(2)
g.Assert(builds[0].ID).Equal(build2.ID) g.Assert(builds[0].ID).Equal(build2.ID)

View file

@ -67,7 +67,7 @@ type Store interface {
GetBuildLastBefore(*model.Repo, string, int64) (*model.Build, error) GetBuildLastBefore(*model.Repo, string, int64) (*model.Build, error)
// GetBuildList gets a list of builds for the repository // GetBuildList gets a list of builds for the repository
GetBuildList(*model.Repo) ([]*model.Build, error) GetBuildList(*model.Repo, int) ([]*model.Build, error)
// GetBuildQueue gets a list of build in queue. // GetBuildQueue gets a list of build in queue.
GetBuildQueue() ([]*model.Feed, error) GetBuildQueue() ([]*model.Feed, error)
@ -223,8 +223,8 @@ func GetBuildLastBefore(c context.Context, repo *model.Repo, branch string, numb
return FromContext(c).GetBuildLastBefore(repo, branch, number) return FromContext(c).GetBuildLastBefore(repo, branch, number)
} }
func GetBuildList(c context.Context, repo *model.Repo) ([]*model.Build, error) { func GetBuildList(c context.Context, repo *model.Repo, page int) ([]*model.Build, error) {
return FromContext(c).GetBuildList(repo) return FromContext(c).GetBuildList(repo, page)
} }
func GetBuildQueue(c context.Context) ([]*model.Feed, error) { func GetBuildQueue(c context.Context) ([]*model.Feed, error) {