Files
identity-provider-api/utils/pagination.go
Björn Benouarets f509f6e524 feat: add utility functions and helpers
- Add JWT token generation and validation utilities
- Add password hashing with bcrypt for secure authentication
- Add pagination helper for API responses
- Add random string generation for tokens and IDs
- Add session management utilities
- Add admin user initialization functionality
2025-09-25 23:24:18 +02:00

47 lines
1.0 KiB
Go

package utils
import (
"fmt"
"math"
"github.com/gofiber/fiber/v2"
)
func Pagination(c *fiber.Ctx, total int64, page int, limit int) (*fiber.Map, *fiber.Map) {
totalPages := int(math.Ceil(float64(total) / float64(limit)))
paginationInformation := fiber.Map{
"page": page,
"limit": limit,
"total": total,
"total_pages": totalPages,
}
paginationLinks := fiber.Map{
"self": fiber.Map{
"href": fmt.Sprintf("%s?page=%d&limit=%d", c.Path(), page, limit),
},
"first": fiber.Map{
"href": fmt.Sprintf("%s?page=1&limit=%d", c.Path(), limit),
},
"last": fiber.Map{
"href": fmt.Sprintf("%s?page=%d&limit=%d", c.Path(), totalPages, limit),
},
"next": nil,
"prev": nil,
}
if page > 1 {
paginationLinks["prev"] = fiber.Map{
"href": fmt.Sprintf("%s?page=%d&limit=%d", c.Path(), page-1, limit),
}
}
if page < totalPages {
paginationLinks["next"] = fiber.Map{
"href": fmt.Sprintf("%s?page=%d&limit=%d", c.Path(), page+1, limit),
}
}
return &paginationInformation, &paginationLinks
}