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
This commit is contained in:
46
utils/pagination.go
Normal file
46
utils/pagination.go
Normal file
@@ -0,0 +1,46 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user