2026-03-22 03:32:02 +00:00
|
|
|
package models
|
|
|
|
|
|
|
|
|
|
// PageInfo carries pagination state for templates.
|
|
|
|
|
type PageInfo struct {
|
|
|
|
|
CurrentPage int
|
|
|
|
|
TotalPages int
|
|
|
|
|
PostsPerPage int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// HasPrevious returns true if there is a previous page.
|
|
|
|
|
func (p PageInfo) HasPrevious() bool {
|
|
|
|
|
return p.CurrentPage > 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// HasNext returns true if there is a next page.
|
|
|
|
|
func (p PageInfo) HasNext() bool {
|
|
|
|
|
return p.CurrentPage < p.TotalPages
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// PreviousPage returns the previous page number.
|
|
|
|
|
func (p PageInfo) PreviousPage() int {
|
|
|
|
|
return p.CurrentPage - 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NextPage returns the next page number.
|
|
|
|
|
func (p PageInfo) NextPage() int {
|
|
|
|
|
return p.CurrentPage + 1
|
|
|
|
|
}
|
2026-03-22 03:34:55 +00:00
|
|
|
|
|
|
|
|
// Pages returns a slice of page numbers for rendering numbered pagination.
|
|
|
|
|
func (p PageInfo) Pages() []int {
|
|
|
|
|
pages := make([]int, p.TotalPages)
|
|
|
|
|
for i := range pages {
|
|
|
|
|
pages[i] = i + 1
|
|
|
|
|
}
|
|
|
|
|
return pages
|
|
|
|
|
}
|