Files
go-utils/entgo/query/order.go
2023-10-25 12:43:46 +08:00

46 lines
873 B
Go

package entgo
import (
"strings"
"entgo.io/ent/dialect/sql"
)
// QueryCommandToOrderConditions 查询命令转换为排序条件
func QueryCommandToOrderConditions(orderBys []string) (error, func(s *sql.Selector)) {
if len(orderBys) == 0 {
return nil, nil
}
return nil, func(s *sql.Selector) {
for _, v := range orderBys {
if strings.HasPrefix(v, "-") {
// 降序
key := v[1:]
if len(key) == 0 {
continue
}
s.OrderBy(sql.Desc(s.C(key)))
} else {
// 升序
if len(v) == 0 {
continue
}
s.OrderBy(sql.Asc(s.C(v)))
}
}
}
}
func BuildOrderSelector(orderBys []string, defaultOrderField string) (error, func(s *sql.Selector)) {
if len(orderBys) == 0 {
return nil, func(s *sql.Selector) {
s.OrderBy(sql.Desc(s.C(defaultOrderField)))
}
} else {
return QueryCommandToOrderConditions(orderBys)
}
}