Files
quyun-v2/backend/app/requests/sort.go

46 lines
836 B
Go

package requests
import (
"strings"
"github.com/samber/lo"
)
// SortQueryFilter defines common query sorting parameters used by list endpoints.
type SortQueryFilter struct {
Asc *string `json:"asc" form:"asc"`
Desc *string `json:"desc" form:"desc"`
}
func (filter *SortQueryFilter) AscFields() []string {
if filter.Asc == nil {
return nil
}
return strings.Split(*filter.Asc, ",")
}
func (filter *SortQueryFilter) DescFields() []string {
if filter.Desc == nil {
return nil
}
return strings.Split(*filter.Desc, ",")
}
func (filter *SortQueryFilter) DescID() *SortQueryFilter {
if filter.Desc == nil {
filter.Desc = lo.ToPtr("id")
}
items := filter.DescFields()
if lo.Contains(items, "id") {
return filter
}
items = append(items, "id")
filter.Desc = lo.ToPtr(strings.Join(items, ","))
return filter
}