Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user