feat: first version.

This commit is contained in:
tx7do
2023-05-18 13:06:55 +08:00
parent 75fcd82de5
commit ba93a75c5a
20 changed files with 1703 additions and 1 deletions

61
entgo/util.go Normal file
View File

@@ -0,0 +1,61 @@
package entgo
import (
"encoding/json"
"strings"
"entgo.io/ent/dialect/sql"
"kratos-utils/stringcase"
)
type WhereConditions []func(s *sql.Selector)
type OrderConditions []func(*sql.Selector)
// QueryCommandToSelector 查询命令转换为选择器
func QueryCommandToSelector(queryCmd, orderByCmd map[string]string) (WhereConditions, OrderConditions) {
var whereCond WhereConditions
var orderCond OrderConditions
if queryCmd != nil {
queryStr, ok := queryCmd["query"]
if ok {
var queryMap map[string]string
err := json.Unmarshal([]byte(queryStr), &queryMap)
if err == nil {
for k, v := range queryMap {
key := stringcase.ToSnakeCase(k)
value := v
whereCond = append(whereCond, func(s *sql.Selector) {
s.Where(sql.EQ(s.C(key), value))
})
}
}
}
}
if orderByCmd != nil {
orderByStr, ok := orderByCmd["orderBy"]
if ok {
var orderByMap map[string]string
err := json.Unmarshal([]byte(orderByStr), &orderByMap)
if err == nil {
for k, v := range orderByMap {
key := stringcase.ToSnakeCase(k)
switch strings.ToLower(v) {
case "desc", "descending", "descend":
orderCond = append(orderCond, func(s *sql.Selector) {
s.OrderBy(sql.Desc(s.C(key)))
})
case "asc", "ascending", "ascend":
orderCond = append(orderCond, func(s *sql.Selector) {
s.OrderBy(sql.Asc(s.C(key)))
})
}
}
}
}
}
return whereCond, orderCond
}