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} }