Files
go-utils/entgo/query/query.go
2023-10-25 14:28:29 +08:00

66 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(dbDriverName string,
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
}