feat(table): 表格排序与搜索改为后端处理
This commit is contained in:
@@ -1,10 +1,19 @@
|
||||
// Package pagination provides types and helpers for paginated responses.
|
||||
package pagination
|
||||
|
||||
import "strings"
|
||||
|
||||
const (
|
||||
SortOrderAsc = "asc"
|
||||
SortOrderDesc = "desc"
|
||||
)
|
||||
|
||||
// PaginationParams 分页参数
|
||||
type PaginationParams struct {
|
||||
Page int
|
||||
PageSize int
|
||||
Page int
|
||||
PageSize int
|
||||
SortBy string
|
||||
SortOrder string
|
||||
}
|
||||
|
||||
// PaginationResult 分页结果
|
||||
@@ -18,8 +27,9 @@ type PaginationResult struct {
|
||||
// DefaultPagination 默认分页参数
|
||||
func DefaultPagination() PaginationParams {
|
||||
return PaginationParams{
|
||||
Page: 1,
|
||||
PageSize: 20,
|
||||
Page: 1,
|
||||
PageSize: 20,
|
||||
SortOrder: SortOrderDesc,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,8 +46,32 @@ func (p PaginationParams) Limit() int {
|
||||
if p.PageSize < 1 {
|
||||
return 20
|
||||
}
|
||||
if p.PageSize > 100 {
|
||||
return 100
|
||||
if p.PageSize > 1000 {
|
||||
return 1000
|
||||
}
|
||||
return p.PageSize
|
||||
}
|
||||
|
||||
// NormalizeSortOrder normalizes sort order to asc/desc and falls back to defaultOrder.
|
||||
func NormalizeSortOrder(order string, defaultOrder string) string {
|
||||
switch strings.ToLower(strings.TrimSpace(defaultOrder)) {
|
||||
case SortOrderAsc:
|
||||
defaultOrder = SortOrderAsc
|
||||
default:
|
||||
defaultOrder = SortOrderDesc
|
||||
}
|
||||
|
||||
switch strings.ToLower(strings.TrimSpace(order)) {
|
||||
case SortOrderAsc:
|
||||
return SortOrderAsc
|
||||
case SortOrderDesc:
|
||||
return SortOrderDesc
|
||||
default:
|
||||
return defaultOrder
|
||||
}
|
||||
}
|
||||
|
||||
// NormalizedSortOrder returns the normalized sort order using defaultOrder as fallback.
|
||||
func (p PaginationParams) NormalizedSortOrder(defaultOrder string) string {
|
||||
return NormalizeSortOrder(p.SortOrder, defaultOrder)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user