api/pkg/pagination/handler.go
2025-07-06 18:16:03 +03:00

35 lines
788 B
Go

package pagination
import "math"
type Params struct {
Page int
PerPage int
TotalCount int
TotalPages int
OverallCount int
}
func PrepareParams(params *Params) *Params {
totalPages := int(math.Ceil(float64(params.TotalCount) / float64(params.PerPage)))
params.TotalPages = totalPages
if params.Page > totalPages {
params.Page = totalPages
}
return params
}
func PaginatedResponse(data any, params *Params) *Response {
pagination := Pagination{
Page: params.Page,
PerPage: params.PerPage,
Total: params.TotalCount,
TotalPages: params.TotalPages,
HasNext: params.Page < params.TotalPages,
HasPrev: params.Page > 1,
OverallCount: params.OverallCount,
}
return &Response{Pagination: pagination, Data: data}
}