46 lines
836 B
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
|
|
}
|