all repos — searchix @ d3336c09a291673ab82e259741bd232baf1bbc07

Search engine for NixOS, nix-darwin, home-manager and NUR users

refactor: extract more pagination logic into module

Alan Pearce
commit

d3336c09a291673ab82e259741bd232baf1bbc07

parent

523d5f2e715f21dd1211c39bc1231d637588902f

1 file changed, 10 insertions(+), 3 deletions(-)

changed files
M internal/pagination/pagination.gointernal/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 } }