18个版本 (1个稳定版本)
1.0.0 | 2022年8月30日 |
---|---|
0.3.9 | 2022年3月14日 |
0.3.8 | 2021年12月17日 |
0.3.6 | 2021年11月29日 |
0.2.1 | 2021年2月5日 |
#747 在 数据库接口
每月 53 次下载
51KB
1.5K SLoC
FLP-GSP
通用搜索解析器
通用搜索字符串(GSS)构建器
转到页面.
通用搜索字符串(GSS)LALR(1)文法
Search -> Relation
Relation -> GroupStart Comparison GroupEnd
-> GroupStart Relation And Relation GroupEnd
-> GroupStart Relation And Comparison GroupEnd
-> GroupStart Comparison And Relation GroupEnd
-> GroupStart Comparison And Comparison GroupEnd
-> GroupStart Relation Or Relation GroupEnd
-> GroupStart Relation Or Comparison GroupEnd
-> GroupStart Comparison Or Relation GroupEnd
-> GroupStart Comparison Or Comparison GroupEnd
-> GroupStart Not Relation GroupEnd
-> GroupStart Not Comparison GroupEnd
Comparison -> Str Equal Str
-> Str EqualCI Str
-> Str Greater Str
-> Str Less Str
-> Str Wildcard Str
-> Str Regex Str
-> Str Any Array
-> Str Null
Str -> DoubleQuote Content DoubleQuote
Array -> SquareBracketLeft (Str Comma)* SquareBracketRight
GroupStart -> (
GroupEnd -> )
And -> &
Or -> |
Not -> !
Equal -> =
EqualCI -> ~
Greater -> >
Less -> <
Wildcard -> *
Regex -> $
Any -> ?
Null -> -
解释器
一些可能有用的示例解释器,需要通过功能启用
评估 ["评估"]
可自定义的代码内评估解释器。 转到文件。
示例可以在这里找到。
概念
要评估 Search
,你需要 EvaluateRules
和 EvaluatePairs
。
-
EvaluateRules
: 你可以覆盖任何默认的比较规则。通常,你可能想要覆盖is_greater_than
和is_less_than
如果键有数值。规则应该尽可能多地重复使用,以减少冗余代码。 -
EvaluatePairs
: 评估的实际键值对。你需要将你的值解析成字符串,以便应用规则。
MySQL ["mysql"]
生成MySQL条件子句。 转到文件。
示例可以在这里找到。
这些类型可以直接在sqlx^0.5绑定中使用。
概念
要从Search
生成MySQL条件子句,你需要MysqlRenames
和MysqlTypes
。
-
MysqlRenames
: 你可以向其中插入任何重命名规则。例如,搜索字符串中的键sex
可能需要重命名为table_a.gender
,根据实际的查询字符串。所有没有重命名规则的键将保持不变。 -
MysqlTypes
:您可以将其插入任何类型。您需要这个,因为条件子句是一个准备子句(即所有值都被替换为占位符(?)),并且您将获得一个包含搜索目标的Vec,目标按照子句中“?”的出现顺序排列。有关详细信息,请参阅示例。另外,如果您没有为某些键插入类型,则MysqlType::StringLike(String)是默认类型。
Postgres ["postgres"]
除了某些类型外,与Mysql非常相似。
这些类型可以直接用于sqlx^0.5绑定,除了sqlx本身定义的几个类型,例如PgInterval
、PgMoney
等。
特殊类型
- VarBit:
target
需要以格式<u64>
。例如,1024
表示比特0000010000000000
依赖关系
~3–5.5MB
~100K SLoC