filter

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

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

func (poc Processor) DatePartField(s *sql.Selector, datePart, field string) string

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) Equal

func (poc Processor) Equal(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

Equal = 相等操作 SQL: WHERE "name" = "tom"

func (Processor) Exact

func (poc Processor) Exact(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

Exact LIKE 操作 精确比对 SQL: WHERE name LIKE 'a';

func (Processor) GT

func (poc Processor) GT(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

GT (Greater than) 大于 > 操作 SQL: WHERE "create_time" > "2023-10-25"

func (Processor) GTE

func (poc Processor) GTE(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

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) IsNotNull

func (poc Processor) IsNotNull(s *sql.Selector, p *sql.Predicate, field, _ string) *sql.Predicate

IsNotNull 不为空 IS NOT NULL操作 SQL: WHERE name IS NOT NULL

func (Processor) IsNull

func (poc Processor) IsNull(s *sql.Selector, p *sql.Predicate, field, _ string) *sql.Predicate

IsNull 为空 IS NULL操作 SQL: WHERE name IS NULL

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

func (poc Processor) JsonbField(s *sql.Selector, jsonbField, field string) string

JsonbField JSONB字段

func (Processor) JsonbFieldExpr

func (poc Processor) JsonbFieldExpr(s *sql.Selector, jsonbField, field string) *sql.Predicate

JsonbFieldExpr 返回一个带参数化占位的表达式(*sql.Predicate), 当需要在 SELECT/ORDER/其它构造表达式时使用,避免返回拼接好的原始字符串。

func (Processor) LT

func (poc Processor) LT(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

LT (Less than) 小于 <操作 SQL: WHERE "create_time" < "2023-10-25"

func (Processor) LTE

func (poc Processor) LTE(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

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

func (poc Processor) Regex(s *sql.Selector, p *sql.Predicate, field, value string) *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 (Processor) Search

func (poc Processor) Search(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

Search 全文搜索 SQL:

func (Processor) StartsWith

func (poc Processor) StartsWith(s *sql.Selector, p *sql.Predicate, field, value string) *sql.Predicate

StartsWith LIKE 前缀+模糊查询 SQL: WHERE name LIKE 'La%';

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

Contains LIKE 前后模糊查询 SQL: WHERE name LIKE '%L%';

func (StructuredFilter) DatePart

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

EndsWith LIKE 后缀+模糊查询 SQL: WHERE name LIKE '%a';

func (StructuredFilter) Equal

Equal = 相等操作 SQL: WHERE "name" = "tom"

func (StructuredFilter) Exact

Exact LIKE 操作 精确比对 SQL: WHERE name LIKE 'a';

func (StructuredFilter) GT

GT (Greater than) 大于 > 操作 SQL: WHERE "create_time" > "2023-10-25"

func (StructuredFilter) GTE

GTE (Greater Than or Equal) 大于等于 >= 操作 SQL: WHERE "create_time" >= "2023-10-25"

func (StructuredFilter) In

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

IsNotNull 不为空 IS NOT NULL操作 SQL: WHERE name IS NOT NULL

func (StructuredFilter) IsNull

IsNull 为空 IS NULL操作 SQL: WHERE name IS NULL

func (StructuredFilter) Jsonb

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

LT (Less than) 小于 <操作 SQL: WHERE "create_time" < "2023-10-25"

func (StructuredFilter) LTE

LTE LTE (Less Than or Equal) 小于等于 <=操作 SQL: WHERE "create_time" <= "2023-10-25"

func (StructuredFilter) NotEqual

NotEqual NOT 不相等操作 SQL: WHERE NOT ("name" = "tom") 或者: WHERE "name" <> "tom" 用NOT可以过滤出NULL,而用<>、!=则不能。

func (StructuredFilter) NotIn

NotIn NOT IN操作 SQL: WHERE name NOT IN ("tom", "jimmy")`

func (StructuredFilter) Process

Process 处理过滤条件

func (StructuredFilter) Range

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

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

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%';

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL