Files
grafana/pkg/registry/apis/iam/common/pagination.go

49 lines
869 B
Go

package common
import (
"net/url"
"strconv"
"k8s.io/apimachinery/pkg/apis/meta/internalversion"
)
type Pagination struct {
Limit int64
Continue int64
}
func PaginationFromListOptions(options *internalversion.ListOptions) Pagination {
limit := options.Limit
if limit < 1 {
limit = 50
}
return Pagination{
Limit: limit,
Continue: parseIntWithFallback(options.Continue, 0, 0),
}
}
func PaginationFromListQuery(query url.Values) Pagination {
return Pagination{
Limit: parseIntWithFallback(query.Get("limit"), 1, 50),
Continue: parseIntWithFallback(query.Get("continue"), 0, 0),
}
}
func parseIntWithFallback(original string, min int64, fallback int64) int64 {
if original == "" {
return fallback
}
v, err := strconv.ParseInt(original, 10, 64)
if err != nil {
return fallback
}
if v < min {
return fallback
}
return v
}