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 }