fc3a66dc83
Go 控制面(SQLite + REST API)嵌入 Mihomo 数据面,Vue 3 多语言 Web 管理台。 含订阅/节点/规则/出站/监控/日志、OpenAPI、API Key、Gitea Actions CI(runs-on: ubuntu-latest) 与开源文档;镜像发布至 git.rc707blog.top Container Registry。 Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
619 B
Go
36 lines
619 B
Go
package api
|
|
|
|
import "strconv"
|
|
|
|
const (
|
|
defaultPageLimit = 50
|
|
maxPageLimit = 500
|
|
)
|
|
|
|
func parseLimitOffset(limitStr, offsetStr string) (limit, offset int) {
|
|
limit, _ = strconv.Atoi(limitStr)
|
|
offset, _ = strconv.Atoi(offsetStr)
|
|
if limit <= 0 {
|
|
limit = defaultPageLimit
|
|
}
|
|
if limit > maxPageLimit {
|
|
limit = maxPageLimit
|
|
}
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
return limit, offset
|
|
}
|
|
|
|
func paginateSlice[T any](items []T, limit, offset int) ([]T, int) {
|
|
total := len(items)
|
|
if offset >= total {
|
|
return nil, total
|
|
}
|
|
end := offset + limit
|
|
if end > total {
|
|
end = total
|
|
}
|
|
return items[offset:end], total
|
|
}
|