Files
tamabox/internal/dbutil/pagination.go
T
tamakyi e3e59e7c69 chore: baseline snapshot before moderation-strictness feature
Repo .git was damaged (refs/ missing, index truncated, object store near-empty).
Repaired via git init (rebuilt refs), stale index preserved as .git/index.corrupt-20260910.bak,
then full worktree committed as a rollback baseline.
2026-09-10 10:56:27 +08:00

47 lines
850 B
Go

// Copyright 2022 E99p1ant. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package dbutil
var (
DefaultPageSize = 20
MaxDefaultPageSize = 100
)
type Pagination struct {
Page int
PageSize int
}
// LimitOffset returns LIMIT and OFFSET parameter for SQL.
// The first page is page 0.
func (p Pagination) LimitOffset() (limit, offset int) {
page := p.Page
pageSize := p.PageSize
if page <= 0 {
page = 1
}
if pageSize < 1 {
pageSize = DefaultPageSize
}
return pageSize, (page - 1) * pageSize
}
type Cursor struct {
Value interface{}
PageSize int
}
func (p Cursor) Limit() int {
pageSize := p.PageSize
if pageSize < 1 {
pageSize = DefaultPageSize
}
if pageSize > MaxDefaultPageSize {
pageSize = MaxDefaultPageSize
}
return pageSize
}