package utils import ( "jannex/admin-dashboard-backend/modules/database" "jannex/admin-dashboard-backend/modules/structs" "math" "time" "github.com/gofiber/fiber/v2" "github.com/rs/zerolog/log" "gorm.io/gorm" ) func GetXAuhorizationHeader(c *fiber.Ctx) string { return c.GetReqHeaders()[HeaderXAuthorization] } func GetXApiKeyHeader(c *fiber.Ctx) string { return c.GetReqHeaders()[HeaderXApiKey] } func GetSessionExpiresAtTime() time.Time { return time.Now().Add(time.Second * SessionExpiresAtTime) } func IsPasswordLengthValid(password string) bool { lenPassword := len(password) if lenPassword < MinPassword || lenPassword > MaxPassword { log.Error().Msg("Password length not valid") return false } return true } // GetTotalPages returns total pages for pagination // Example whereQuery = "stock_item_id = ?" and args = stockItemId is Where("stock_item_id = ?", stockItemId) func GetTotalPages(paginationLimit int, any interface{}, whereQuery interface{}, args ...interface{}) int { var totalPages int64 database.DB.Model(any). Where(whereQuery, args). Count(&totalPages) return int(math.Ceil(float64(totalPages) / float64(paginationLimit))) } func GetPageOffset(page int, paginationLimit int) int { return (page - 1) * paginationLimit } func DbPageQuery(query structs.PageQuery, paginationLimit int, result any, orderBy, whereQuery interface{}, args ...interface{}) *gorm.DB { return database.DB.Limit(paginationLimit). Offset(GetPageOffset(query.Page, paginationLimit)). Where(whereQuery, args). Order(orderBy). Find(result) }