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 }