42 lines
685 B
Smarty
42 lines
685 B
Smarty
package requests
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
type SortQueryFilter struct {
|
|
Asc *string `json:"asc" form:"asc"`
|
|
Desc *string `json:"desc" form:"desc"`
|
|
}
|
|
|
|
func (s *SortQueryFilter) AscFields() []string {
|
|
if s.Asc == nil {
|
|
return nil
|
|
}
|
|
return strings.Split(*s.Asc, ",")
|
|
}
|
|
|
|
func (s *SortQueryFilter) DescFields() []string {
|
|
if s.Desc == nil {
|
|
return nil
|
|
}
|
|
return strings.Split(*s.Desc, ",")
|
|
}
|
|
|
|
func (s *SortQueryFilter) DescID() *SortQueryFilter {
|
|
if s.Desc == nil {
|
|
s.Desc = lo.ToPtr("id")
|
|
}
|
|
|
|
items := s.DescFields()
|
|
if lo.Contains(items, "id") {
|
|
return s
|
|
}
|
|
|
|
items = append(items, "id")
|
|
s.Desc = lo.ToPtr(strings.Join(items, ","))
|
|
return s
|
|
}
|