refactor: extract more pagination logic into module
1 file changed, 10 insertions(+), 3 deletions(-)
changed files
M internal/pagination/pagination.go → internal/pagination/pagination.go
@@ -1,5 +1,7 @@ package pagination +import "alin.ovh/searchix/internal/config" + type Pagination struct { total uint64@@ -10,7 +12,8 @@ Current, Prev, Next int - Needed bool + Needed bool + CanShowAll bool } func New(page int, pageSize int) *Pagination {@@ -18,14 +21,18 @@ return &Pagination{ Current: page, From: (page - 1) * pageSize, Size: pageSize, + Needed: page > 1, } } func (p *Pagination) SetResults(total uint64) { p.total = total - p.Needed = p.total > uint64(p.Size) + p.Needed = p.Needed || (total > uint64(p.Size)) + p.CanShowAll = p.Needed && total < config.MaxResultsShowAll + if p.Current > 1 { + p.Prev = p.Current - 1 + } if uint64(p.Current*p.Size) <= p.total { p.Next = p.Current + 1 - p.Prev = p.Current - 1 } }