dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 1d14d217df69487e186ac3b2d323346fdc4af2b1
parent 04afc9d04e691d67056af91097a75698f5339b46
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 15 Jan 2023 20:37:14 -0800

move code

Diffstat:
Mpkg/web/handlers/handlers.go | 49-------------------------------------------------
Apkg/web/handlers/paginator.go | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 49 deletions(-)

diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -10,7 +10,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/jinzhu/gorm" "github.com/notnil/chess" _ "golang.org/x/image/bmp" _ "golang.org/x/image/webp" @@ -19,7 +18,6 @@ import ( "image/png" "io" "io/ioutil" - "math" "math/rand" "net/http" "net/url" @@ -3094,53 +3092,6 @@ func ChatDeleteHandler(c echo.Context) error { return c.Render(http.StatusOK, "chat-delete", data) } -type Paginator struct { - resultsPerPage int64 - wantedPageQueryParam string -} - -func NewPaginator() *Paginator { - return &Paginator{ - wantedPageQueryParam: "p", - resultsPerPage: 50, - } -} - -func (p *Paginator) SetResultPerPage(v int64) *Paginator { - p.resultsPerPage = v - return p -} - -func (p *Paginator) SetWantedPageQueryParam(v string) *Paginator { - p.wantedPageQueryParam = v - return p -} - -func (p *Paginator) Paginate(c echo.Context, query *gorm.DB) (int64, int64, int64, *gorm.DB) { - wantedPage := utils.DoParseInt64(c.QueryParam(p.wantedPageQueryParam)) - var count int64 - query.Count(&count) - resultsPerPage := p.resultsPerPage - page, maxPage := paginate(resultsPerPage, wantedPage, count) - query = query.Offset((page - 1) * resultsPerPage).Limit(resultsPerPage) - return page, maxPage, count, query -} - -func paginate(resultsPerPage, wantedPage, size int64) (page int64, maxPage int64) { - page = wantedPage - if page <= 1 { - page = 1 - } - maxPage = int64(math.Ceil(float64(size) / float64(resultsPerPage))) - if maxPage <= 1 { - maxPage = 1 - } - if page > maxPage { - page = maxPage - } - return -} - func ChatArchiveHandler(c echo.Context) error { authUser := c.Get("authUser").(*database.User) var data chatArchiveData diff --git a/pkg/web/handlers/paginator.go b/pkg/web/handlers/paginator.go @@ -0,0 +1,55 @@ +package handlers + +import ( + "dkforest/pkg/utils" + "github.com/jinzhu/gorm" + "github.com/labstack/echo" + "math" +) + +type Paginator struct { + resultsPerPage int64 + wantedPageQueryParam string +} + +func NewPaginator() *Paginator { + return &Paginator{ + wantedPageQueryParam: "p", + resultsPerPage: 50, + } +} + +func (p *Paginator) SetResultPerPage(v int64) *Paginator { + p.resultsPerPage = v + return p +} + +func (p *Paginator) SetWantedPageQueryParam(v string) *Paginator { + p.wantedPageQueryParam = v + return p +} + +func (p *Paginator) Paginate(c echo.Context, query *gorm.DB) (int64, int64, int64, *gorm.DB) { + wantedPage := utils.DoParseInt64(c.QueryParam(p.wantedPageQueryParam)) + var count int64 + query.Count(&count) + resultsPerPage := p.resultsPerPage + page, maxPage := paginate(resultsPerPage, wantedPage, count) + query = query.Offset((page - 1) * resultsPerPage).Limit(resultsPerPage) + return page, maxPage, count, query +} + +func paginate(resultsPerPage, wantedPage, size int64) (page int64, maxPage int64) { + page = wantedPage + if page <= 1 { + page = 1 + } + maxPage = int64(math.Ceil(float64(size) / float64(resultsPerPage))) + if maxPage <= 1 { + maxPage = 1 + } + if page > maxPage { + page = maxPage + } + return +}