]> source.dussan.org Git - gitea.git/commitdiff
Fix bug about ListOptions and stars/watchers pagnation (#14556)
authorLunny Xiao <xiaolunwen@gmail.com>
Thu, 4 Feb 2021 17:23:46 +0000 (01:23 +0800)
committerGitHub <noreply@github.com>
Thu, 4 Feb 2021 17:23:46 +0000 (11:23 -0600)
* Fix bug about ListOptions and stars/watchers pagnation

* fix unit test

Co-authored-by: 6543 <6543@obermui.de>
models/commit_status_test.go
models/list_options.go
routers/repo/view.go

index 90d72cd74dfb2e1034df865e9a7369219c6e0447..57b97f66063efb89c727037e627d601ed6b63f0d 100644 (file)
@@ -18,7 +18,7 @@ func TestGetCommitStatuses(t *testing.T) {
 
        sha1 := "1234123412341234123412341234123412341234"
 
-       statuses, maxResults, err := GetCommitStatuses(repo1, sha1, &CommitStatusOptions{})
+       statuses, maxResults, err := GetCommitStatuses(repo1, sha1, &CommitStatusOptions{ListOptions: ListOptions{Page: 1, PageSize: 50}})
        assert.NoError(t, err)
        assert.Equal(t, int(maxResults), 5)
        assert.Len(t, statuses, 5)
index 0912355352d69c29055cd63e7f2ad65b0415c8c7..9cccd05465afe0a8c14d554bd4b8a03e10d74e59 100644 (file)
@@ -16,13 +16,13 @@ type ListOptions struct {
        Page     int // start from 1
 }
 
-func (opts ListOptions) getPaginatedSession() *xorm.Session {
+func (opts *ListOptions) getPaginatedSession() *xorm.Session {
        opts.setDefaultValues()
 
        return x.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
 }
 
-func (opts ListOptions) setSessionPagination(sess *xorm.Session) *xorm.Session {
+func (opts *ListOptions) setSessionPagination(sess *xorm.Session) *xorm.Session {
        opts.setDefaultValues()
 
        if opts.PageSize <= 0 {
@@ -31,21 +31,21 @@ func (opts ListOptions) setSessionPagination(sess *xorm.Session) *xorm.Session {
        return sess.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
 }
 
-func (opts ListOptions) setEnginePagination(e Engine) Engine {
+func (opts *ListOptions) setEnginePagination(e Engine) Engine {
        opts.setDefaultValues()
 
        return e.Limit(opts.PageSize, (opts.Page-1)*opts.PageSize)
 }
 
 // GetStartEnd returns the start and end of the ListOptions
-func (opts ListOptions) GetStartEnd() (start, end int) {
+func (opts *ListOptions) GetStartEnd() (start, end int) {
        opts.setDefaultValues()
        start = (opts.Page - 1) * opts.PageSize
        end = start + opts.Page
        return
 }
 
-func (opts ListOptions) setDefaultValues() {
+func (opts *ListOptions) setDefaultValues() {
        if opts.PageSize <= 0 {
                opts.PageSize = setting.API.DefaultPagingNum
        }
index 25d40c34d8f2bc26436fb46d8d6238294e6933d1..45f17dee44b96dea1b42ff87db6f3907324cab19 100644 (file)
@@ -713,7 +713,10 @@ func RenderUserCards(ctx *context.Context, total int, getter func(opts models.Li
        pager := context.NewPagination(total, models.ItemsPerPage, page, 5)
        ctx.Data["Page"] = pager
 
-       items, err := getter(models.ListOptions{Page: pager.Paginater.Current()})
+       items, err := getter(models.ListOptions{
+               Page:     pager.Paginater.Current(),
+               PageSize: models.ItemsPerPage,
+       })
        if err != nil {
                ctx.ServerError("getter", err)
                return
@@ -744,6 +747,7 @@ func Stars(ctx *context.Context) {
 func Forks(ctx *context.Context) {
        ctx.Data["Title"] = ctx.Tr("repos.forks")
 
+       // TODO: need pagination
        forks, err := ctx.Repo.Repository.GetForks(models.ListOptions{})
        if err != nil {
                ctx.ServerError("GetForks", err)