feat: entgo query .

This commit is contained in:
tx7do
2023-10-25 12:43:46 +08:00
parent 5b2a7ab922
commit 36a096df76
9 changed files with 32 additions and 83 deletions

64
entgo/query/query.go Normal file
View File

@@ -0,0 +1,64 @@
package entgo
import (
"entgo.io/ent/dialect/sql"
"github.com/go-kratos/kratos/v2/encoding"
_ "github.com/go-kratos/kratos/v2/encoding/json"
)
const (
DefaultPage = 1
DefaultPageSize = 10
)
// parseJsonMap 解析JSON字符串里面的MAP包含Array形式的Map
func parseJsonMap(strJson []byte, retMap *map[string]string) error {
codec := encoding.GetCodec("json")
var err error
if err = codec.Unmarshal(strJson, retMap); err != nil {
var retArray []map[string]string
if err1 := codec.Unmarshal(strJson, &retArray); err1 == nil {
for _, itemA := range retArray {
for k, v := range itemA {
(*retMap)[k] = v
}
}
} else {
return err
}
}
return nil
}
// BuildQuerySelector 构建分页查询选择器
func BuildQuerySelector(andFilterJsonString, orFilterJsonString string,
page, pageSize int32, noPaging bool,
orderBys []string, defaultOrderField string) (err error, whereSelectors []func(s *sql.Selector), querySelectors []func(s *sql.Selector)) {
err, whereSelectors = BuildFilterSelector(andFilterJsonString, orFilterJsonString)
if err != nil {
return err, nil, nil
}
var orderSelector func(s *sql.Selector)
err, orderSelector = BuildOrderSelector(orderBys, defaultOrderField)
if err != nil {
return err, nil, nil
}
pageSelector := BuildPaginationSelector(page, pageSize, noPaging)
if len(whereSelectors) > 0 {
querySelectors = append(querySelectors, whereSelectors...)
}
if orderSelector != nil {
querySelectors = append(querySelectors, orderSelector)
}
if pageSelector != nil {
querySelectors = append(querySelectors, pageSelector)
}
return
}