Documentation
¶
Index ¶
- Constants
- func ApplyFieldMaskSelect(apply func(...string), mask *fieldmaskpb.FieldMask)
- func ApplyFieldMaskToBuilder[R any, B interface{ ... }](builder B, mask *fieldmaskpb.FieldMask) (R, bool)
- func BuildFieldSelect(s *sql.Selector, fields []string)
- func BuildFieldSelector(fields []string) (error, func(s *sql.Selector))
- func BuildFilterSelector(andFilterJsonString, orFilterJsonString string) (error, []func(s *sql.Selector))
- func BuildOrderSelect(s *sql.Selector, field string, desc bool)
- func BuildOrderSelector(orderBys []string, defaultOrderField string) (error, func(s *sql.Selector))
- func BuildPaginationSelect(s *sql.Selector, page, pageSize int32)
- func BuildPaginationSelector(page, pageSize int32, noPaging bool) func(*sql.Selector)
- func BuildQuerySelector(andFilterJsonString, orFilterJsonString string, page, pageSize int32, ...) (err error, whereSelectors []func(s *sql.Selector), ...)
- func NormalizeFieldMaskPaths(fm *fieldmaskpb.FieldMask)
- func NormalizePaths(paths []string) []string
- func QueryCommandToOrderConditions(orderBys []string) (error, func(s *sql.Selector))
- func QueryCommandToWhereConditions(strJson string, isOr bool) (error, func(s *sql.Selector))
- type DatePart
- type FilterOp
Constants ¶
const ( QueryDelimiter = "__" // 分隔符 JsonFieldDelimiter = "." // JSONB字段分隔符 )
Variables ¶
This section is empty.
Functions ¶
func ApplyFieldMaskSelect ¶ added in v1.1.41
func ApplyFieldMaskSelect(apply func(...string), mask *fieldmaskpb.FieldMask)
ApplyFieldMaskSelect 将 fieldmask 转换为 snake_case 并通过 apply 回调传入。 - apply: 接受归一化字段并调用,例如: func(ps ...string) { builder.Select(ps...) } - mask: 传入的 FieldMask,nil 或 空时不做任何操作
func ApplyFieldMaskToBuilder ¶ added in v1.1.41
func ApplyFieldMaskToBuilder[R any, B interface{ Select(fields ...string) R }](builder B, mask *fieldmaskpb.FieldMask) (R, bool)
ApplyFieldMaskToBuilder 接受一个带 Select(...string) 方法的 builder 和 FieldMask, 将 paths 归一化为 snake_case(并将 id_/_id 归为 id),然后调用 builder.Select(paths...) 并返回 builder。 - R 是 Select 方法的返回类型(例如 *ent.UserSelect) - B 是拥有 Select(...string) R 方法的类型(例如 *ent.UserQuery) 返回 (R, bool): bool 表示是否实际调用了 Select(即 mask 非空)。
func BuildFieldSelect ¶ added in v1.1.7
BuildFieldSelect 构建字段选择
func BuildFieldSelector ¶ added in v1.1.7
BuildFieldSelector 构建字段选择器
func BuildFilterSelector ¶
func BuildFilterSelector(andFilterJsonString, orFilterJsonString string) (error, []func(s *sql.Selector))
BuildFilterSelector 构建过滤选择器
func BuildOrderSelect ¶ added in v1.1.2
func BuildOrderSelector ¶
func BuildPaginationSelect ¶ added in v1.1.2
func BuildPaginationSelector ¶
func BuildQuerySelector ¶
func BuildQuerySelector( andFilterJsonString, orFilterJsonString string, page, pageSize int32, noPaging bool, orderBys []string, defaultOrderField string, selectFields []string, ) (err error, whereSelectors []func(s *sql.Selector), querySelectors []func(s *sql.Selector))
BuildQuerySelector 构建分页过滤查询器
func NormalizeFieldMaskPaths ¶ added in v1.1.41
func NormalizeFieldMaskPaths(fm *fieldmaskpb.FieldMask)
NormalizeFieldMaskPaths normalizes the paths in the given FieldMask to snake_case
func NormalizePaths ¶ added in v1.1.41
func QueryCommandToOrderConditions ¶
QueryCommandToOrderConditions 查询命令转换为排序条件
Types ¶
type DatePart ¶ added in v1.1.6
type DatePart int
const ( FilterNot DatePart = iota // 不等于 FilterIn // 检查值是否在列表中 FilterNotIn // 不在列表中 FilterGTE // 大于或等于传递的值 FilterGT // 大于传递值 FilterLTE // 小于或等于传递值 FilterLT // 小于传递值 FilterRange // 是否介于和给定的两个值之间 FilterIsNull // 是否为空 FilterNotIsNull // 是否不为空 FilterContains // 是否包含指定的子字符串 FilterInsensitiveContains // 不区分大小写,是否包含指定的子字符串 FilterStartsWith // 以值开头 FilterInsensitiveStartsWith // 不区分大小写,以值开头 FilterEndsWith // 以值结尾 FilterInsensitiveEndsWith // 不区分大小写,以值结尾 FilterExact // 精确匹配 FilterInsensitiveExact // 不区分大小写,精确匹配 FilterRegex // 正则表达式 FilterInsensitiveRegex // 不区分大小写,正则表达式 FilterSearch // 全文搜索 )
const ( DatePartDate DatePart = iota // 日期 DatePartYear // 年 DatePartISOYear // ISO 8601 一年中的周数 DatePartQuarter // 季度 DatePartMonth // 月 DatePartWeek // ISO 8601 周编号 一年中的周数 DatePartWeekDay // 星期几 DatePartISOWeekDay // 星期几 DatePartDay // 日 DatePartTime // 小时:分钟:秒 DatePartHour // 小时 DatePartMinute // 分钟 DatePartSecond // 秒 DatePartMicrosecond // 微秒 )