41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package entgo
|
|
|
|
import (
|
|
"entgo.io/ent/dialect/sql"
|
|
_ "github.com/go-kratos/kratos/v2/encoding/json"
|
|
)
|
|
|
|
// 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
|
|
}
|