46 lines
873 B
Go
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)
|
|
}
|
|
}
|