mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 05:32:32 +08:00
49 lines
869 B
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
|
|
}
|