Files
Enterprise-Knowledge-Base/internal/handler/list_pagination.go
T
wizardchen 884ac44283 feat(invitations): implement pending invitations feature with polling and dialog
Added functionality for managing pending invitations, including a polling mechanism to update the invitation count in real-time. Introduced a new dialog component for users to view and respond to their invitations without navigating away from their current context. Updated API endpoints for fetching and managing invitations, and enhanced the user interface with relevant internationalization support.

Refs: #1303
2026-05-18 17:28:58 +08:00

43 lines
1.1 KiB
Go

package handler
import (
"fmt"
"strconv"
"strings"
"github.com/gin-gonic/gin"
apperrors "github.com/Tencent/WeKnora/internal/errors"
)
const (
defaultListPageSize = 20
maxListPageSize = 100
)
// parseListPagination parses ?page and ?page_size for tenant-scoped list
// endpoints. Omitted keys default to page=1 and page_size=20. A present but
// malformed or out-of-range value yields a validation error on the context.
func parseListPagination(c *gin.Context) (page, pageSize int, ok bool) {
page = 1
pageSize = defaultListPageSize
if s := strings.TrimSpace(c.Query("page")); s != "" {
p, err := strconv.Atoi(s)
if err != nil || p < 1 {
c.Error(apperrors.NewValidationError("page must be a positive integer"))
return 0, 0, false
}
page = p
}
if s := strings.TrimSpace(c.Query("page_size")); s != "" {
ps, err := strconv.Atoi(s)
if err != nil || ps < 1 || ps > maxListPageSize {
c.Error(apperrors.NewValidationError(fmt.Sprintf("page_size must be between 1 and %d", maxListPageSize)))
return 0, 0, false
}
pageSize = ps
}
return page, pageSize, true
}