feat: entgo query .
This commit is contained in:
64
entgo/query/query.go
Normal file
64
entgo/query/query.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user