Documentation
¶
Index ¶
- type Processor
- func (poc Processor) Contains(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) DatePart(s *sql.Selector, p *sql.Predicate, datePart, field string) *sql.Predicate
- func (poc Processor) DatePartField(s *sql.Selector, datePart, field string) string
- func (poc Processor) EndsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) Equal(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) Exact(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) GT(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) GTE(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) In(s *sql.Selector, p *sql.Predicate, field, value string, values []string) *sql.Predicate
- func (poc Processor) InsensitiveContains(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) InsensitiveEndsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) InsensitiveExact(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) InsensitiveRegex(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) InsensitiveStartsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) IsNotNull(s *sql.Selector, p *sql.Predicate, field, _ string) *sql.Predicate
- func (poc Processor) IsNull(s *sql.Selector, p *sql.Predicate, field, _ string) *sql.Predicate
- func (poc Processor) Jsonb(s *sql.Selector, p *sql.Predicate, jsonbField, field string) *sql.Predicate
- func (poc Processor) JsonbField(s *sql.Selector, jsonbField, field string) string
- func (poc Processor) JsonbFieldExpr(s *sql.Selector, jsonbField, field string) *sql.Predicate
- func (poc Processor) LT(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) LTE(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) NotEqual(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) NotIn(s *sql.Selector, p *sql.Predicate, field, value string, values []string) *sql.Predicate
- func (poc Processor) Process(s *sql.Selector, p *sql.Predicate, op paginationV1.Operator, ...) *sql.Predicate
- func (poc Processor) Range(s *sql.Selector, _ *sql.Predicate, field, value string, values []string) *sql.Predicate
- func (poc Processor) Regex(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) Search(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- func (poc Processor) StartsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
- type StructuredFilter
- func (sf StructuredFilter) BuildSelectors(expr *paginationV1.FilterExpr) ([]func(s *sql.Selector), error)
- func (sf StructuredFilter) Contains(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) DatePart(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) DatePartField(s *sql.Selector, condition *paginationV1.FilterCondition) string
- func (sf StructuredFilter) EndsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Equal(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Exact(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) GT(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) GTE(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) In(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) InsensitiveContains(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) InsensitiveEndsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) InsensitiveExact(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) InsensitiveRegex(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) InsensitiveStartsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) IsNotNull(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) IsNull(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Jsonb(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) JsonbField(s *sql.Selector, condition *paginationV1.FilterCondition) string
- func (sf StructuredFilter) JsonbFieldExpr(s *sql.Selector, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) LT(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) LTE(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) NotEqual(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) NotIn(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Process(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Range(s *sql.Selector, _ *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Regex(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) Search(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
- func (sf StructuredFilter) StartsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Processor ¶
type Processor struct {
// contains filtered or unexported fields
}
Processor 过滤处理器接口
func NewProcessor ¶
func NewProcessor() *Processor
func (Processor) Contains ¶
func (poc Processor) Contains(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
Contains LIKE 前后模糊查询 SQL: WHERE name LIKE '%L%';
func (Processor) DatePart ¶
func (poc Processor) DatePart(s *sql.Selector, p *sql.Predicate, datePart, field string) *sql.Predicate
DatePart 时间戳提取日期 SQL: select extract(quarter from timestamp '2018-08-15 12:10:10');
func (Processor) DatePartField ¶
DatePartField 日期
func (Processor) EndsWith ¶
func (poc Processor) EndsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
EndsWith LIKE 后缀+模糊查询 SQL: WHERE name LIKE '%a';
func (Processor) GTE ¶
GTE (Greater Than or Equal) 大于等于 >= 操作 SQL: WHERE "create_time" >= "2023-10-25"
func (Processor) In ¶
func (poc Processor) In(s *sql.Selector, p *sql.Predicate, field, value string, values []string) *sql.Predicate
In IN操作 SQL: WHERE name IN ("tom", "jimmy")
func (Processor) InsensitiveContains ¶
func (poc Processor) InsensitiveContains(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
InsensitiveContains ILIKE 前后模糊查询 SQL: WHERE name ILIKE '%L%';
func (Processor) InsensitiveEndsWith ¶
func (poc Processor) InsensitiveEndsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
InsensitiveEndsWith ILIKE 后缀+模糊查询 SQL: WHERE name ILIKE '%a';
func (Processor) InsensitiveExact ¶
func (poc Processor) InsensitiveExact(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
InsensitiveExact ILIKE 操作 不区分大小写,精确比对 SQL: WHERE name ILIKE 'a';
func (Processor) InsensitiveRegex ¶
func (poc Processor) InsensitiveRegex(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
InsensitiveRegex 正则查找 不区分大小写 MySQL: WHERE title REGEXP '^(an?|the) +' Oracle: WHERE REGEXP_LIKE(title, '^(an?|the) +', 'i'); PostgreSQL: WHERE title ~* '^(an?|the) +'; SQLite: WHERE title REGEXP '(?i)^(an?|the) +';
func (Processor) InsensitiveStartsWith ¶
func (poc Processor) InsensitiveStartsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
InsensitiveStartsWith ILIKE 前缀+模糊查询 SQL: WHERE name ILIKE 'La%';
func (Processor) Jsonb ¶
func (poc Processor) Jsonb(s *sql.Selector, p *sql.Predicate, jsonbField, field string) *sql.Predicate
Jsonb 提取JSONB字段 Postgresql: WHERE ("app_profile"."preferences" ->> 'daily_email') = 'true' Mysql: WHERE JSON_EXTRACT(`preferences`, '$.daily_email') = 'true'
func (Processor) JsonbField ¶
JsonbField JSONB字段
func (Processor) JsonbFieldExpr ¶
JsonbFieldExpr 返回一个带参数化占位的表达式(*sql.Predicate), 当需要在 SELECT/ORDER/其它构造表达式时使用,避免返回拼接好的原始字符串。
func (Processor) LTE ¶
LTE LTE (Less Than or Equal) 小于等于 <=操作 SQL: WHERE "create_time" <= "2023-10-25"
func (Processor) NotEqual ¶
func (poc Processor) NotEqual(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate
NotEqual NOT 不相等操作 SQL: WHERE NOT ("name" = "tom") 或者: WHERE "name" <> "tom" 用NOT可以过滤出NULL,而用<>、!=则不能。
func (Processor) NotIn ¶
func (poc Processor) NotIn(s *sql.Selector, p *sql.Predicate, field, value string, values []string) *sql.Predicate
NotIn NOT IN操作 SQL: WHERE name NOT IN ("tom", "jimmy")`
func (Processor) Process ¶
func (poc Processor) Process(s *sql.Selector, p *sql.Predicate, op paginationV1.Operator, field, value string, values []string) *sql.Predicate
Process 处理过滤条件
func (Processor) Range ¶
func (poc Processor) Range(s *sql.Selector, _ *sql.Predicate, field, value string, values []string) *sql.Predicate
Range 在值域之中 BETWEEN操作 SQL: WHERE "create_time" BETWEEN "2023-10-25" AND "2024-10-25" 或者: WHERE "create_time" >= "2023-10-25" AND "create_time" <= "2024-10-25"
func (Processor) Regex ¶
Regex 正则查找 MySQL: WHERE title REGEXP BINARY '^(An?|The) +' Oracle: WHERE REGEXP_LIKE(title, '^(An?|The) +', 'c'); PostgreSQL: WHERE title ~ '^(An?|The) +'; SQLite: WHERE title REGEXP '^(An?|The) +';
type StructuredFilter ¶
type StructuredFilter struct {
// contains filtered or unexported fields
}
StructuredFilter 基于 FilterExpr 的过滤器
func NewStructuredFilter ¶
func NewStructuredFilter() *StructuredFilter
func (StructuredFilter) BuildSelectors ¶
func (sf StructuredFilter) BuildSelectors(expr *paginationV1.FilterExpr) ([]func(s *sql.Selector), error)
BuildSelectors 构建过滤选择器
func (StructuredFilter) Contains ¶
func (sf StructuredFilter) Contains(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Contains LIKE 前后模糊查询 SQL: WHERE name LIKE '%L%';
func (StructuredFilter) DatePart ¶
func (sf StructuredFilter) DatePart(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
DatePart 时间戳提取日期 SQL: select extract(quarter from timestamp '2018-08-15 12:10:10');
func (StructuredFilter) DatePartField ¶
func (sf StructuredFilter) DatePartField(s *sql.Selector, condition *paginationV1.FilterCondition) string
DatePartField 日期
func (StructuredFilter) EndsWith ¶
func (sf StructuredFilter) EndsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
EndsWith LIKE 后缀+模糊查询 SQL: WHERE name LIKE '%a';
func (StructuredFilter) Equal ¶
func (sf StructuredFilter) Equal(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Equal = 相等操作 SQL: WHERE "name" = "tom"
func (StructuredFilter) Exact ¶
func (sf StructuredFilter) Exact(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Exact LIKE 操作 精确比对 SQL: WHERE name LIKE 'a';
func (StructuredFilter) GT ¶
func (sf StructuredFilter) GT(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
GT (Greater than) 大于 > 操作 SQL: WHERE "create_time" > "2023-10-25"
func (StructuredFilter) GTE ¶
func (sf StructuredFilter) GTE(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
GTE (Greater Than or Equal) 大于等于 >= 操作 SQL: WHERE "create_time" >= "2023-10-25"
func (StructuredFilter) In ¶
func (sf StructuredFilter) In(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
In IN操作 SQL: WHERE name IN ("tom", "jimmy")
func (StructuredFilter) InsensitiveContains ¶
func (sf StructuredFilter) InsensitiveContains(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
InsensitiveContains ILIKE 前后模糊查询 SQL: WHERE name ILIKE '%L%';
func (StructuredFilter) InsensitiveEndsWith ¶
func (sf StructuredFilter) InsensitiveEndsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
InsensitiveEndsWith ILIKE 后缀+模糊查询 SQL: WHERE name ILIKE '%a';
func (StructuredFilter) InsensitiveExact ¶
func (sf StructuredFilter) InsensitiveExact(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
InsensitiveExact ILIKE 操作 不区分大小写,精确比对 SQL: WHERE name ILIKE 'a';
func (StructuredFilter) InsensitiveRegex ¶
func (sf StructuredFilter) InsensitiveRegex(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
InsensitiveRegex 正则查找 不区分大小写 MySQL: WHERE title REGEXP '^(an?|the) +' Oracle: WHERE REGEXP_LIKE(title, '^(an?|the) +', 'i'); PostgreSQL: WHERE title ~* '^(an?|the) +'; SQLite: WHERE title REGEXP '(?i)^(an?|the) +';
func (StructuredFilter) InsensitiveStartsWith ¶
func (sf StructuredFilter) InsensitiveStartsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
InsensitiveStartsWith ILIKE 前缀+模糊查询 SQL: WHERE name ILIKE 'La%';
func (StructuredFilter) IsNotNull ¶
func (sf StructuredFilter) IsNotNull(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
IsNotNull 不为空 IS NOT NULL操作 SQL: WHERE name IS NOT NULL
func (StructuredFilter) IsNull ¶
func (sf StructuredFilter) IsNull(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
IsNull 为空 IS NULL操作 SQL: WHERE name IS NULL
func (StructuredFilter) Jsonb ¶
func (sf StructuredFilter) Jsonb(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Jsonb 提取JSONB字段 Postgresql: WHERE ("app_profile"."preferences" ->> 'daily_email') = 'true' Mysql: WHERE JSON_EXTRACT(`preferences`, '$.daily_email') = 'true'
func (StructuredFilter) JsonbField ¶
func (sf StructuredFilter) JsonbField(s *sql.Selector, condition *paginationV1.FilterCondition) string
JsonbField JSONB字段
func (StructuredFilter) JsonbFieldExpr ¶
func (sf StructuredFilter) JsonbFieldExpr(s *sql.Selector, condition *paginationV1.FilterCondition) *sql.Predicate
JsonbFieldExpr 返回一个带参数化占位的表达式(*sql.Predicate), 当需要在 SELECT/ORDER/其它构造表达式时使用,避免返回拼接好的原始字符串。
func (StructuredFilter) LT ¶
func (sf StructuredFilter) LT(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
LT (Less than) 小于 <操作 SQL: WHERE "create_time" < "2023-10-25"
func (StructuredFilter) LTE ¶
func (sf StructuredFilter) LTE(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
LTE LTE (Less Than or Equal) 小于等于 <=操作 SQL: WHERE "create_time" <= "2023-10-25"
func (StructuredFilter) NotEqual ¶
func (sf StructuredFilter) NotEqual(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
NotEqual NOT 不相等操作 SQL: WHERE NOT ("name" = "tom") 或者: WHERE "name" <> "tom" 用NOT可以过滤出NULL,而用<>、!=则不能。
func (StructuredFilter) NotIn ¶
func (sf StructuredFilter) NotIn(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
NotIn NOT IN操作 SQL: WHERE name NOT IN ("tom", "jimmy")`
func (StructuredFilter) Process ¶
func (sf StructuredFilter) Process(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Process 处理过滤条件
func (StructuredFilter) Range ¶
func (sf StructuredFilter) Range(s *sql.Selector, _ *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Range 在值域之中 BETWEEN操作 SQL: WHERE "create_time" BETWEEN "2023-10-25" AND "2024-10-25" 或者: WHERE "create_time" >= "2023-10-25" AND "create_time" <= "2024-10-25"
func (StructuredFilter) Regex ¶
func (sf StructuredFilter) Regex(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Regex 正则查找 MySQL: WHERE title REGEXP BINARY '^(An?|The) +' Oracle: WHERE REGEXP_LIKE(title, '^(An?|The) +', 'c'); PostgreSQL: WHERE title ~ '^(An?|The) +'; SQLite: WHERE title REGEXP '^(An?|The) +';
func (StructuredFilter) Search ¶
func (sf StructuredFilter) Search(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
Search 全文搜索 SQL:
func (StructuredFilter) StartsWith ¶
func (sf StructuredFilter) StartsWith(s *sql.Selector, p *sql.Predicate, condition *paginationV1.FilterCondition) *sql.Predicate
StartsWith LIKE 前缀+模糊查询 SQL: WHERE name LIKE 'La%';