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数据库接口

Download history 48/week @ 2024-04-04

每月 53 次下载

MIT/Apache

51KB
1.5K SLoC

FLP-GSP

Crates.io Version

通用搜索解析器

通用搜索字符串(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,你需要 EvaluateRulesEvaluatePairs

  • EvaluateRules: 你可以覆盖任何默认的比较规则。通常,你可能想要覆盖 is_greater_thanis_less_than 如果键有数值。规则应该尽可能多地重复使用,以减少冗余代码。

  • EvaluatePairs: 评估的实际键值对。你需要将你的值解析成字符串,以便应用规则。

MySQL ["mysql"]

生成MySQL条件子句。 转到文件

示例可以在这里找到。

这些类型可以直接在sqlx^0.5绑定中使用。

概念

要从Search生成MySQL条件子句,你需要MysqlRenamesMysqlTypes

  • MysqlRenames: 你可以向其中插入任何重命名规则。例如,搜索字符串中的键 sex 可能需要重命名为 table_a.gender,根据实际的查询字符串。所有没有重命名规则的键将保持不变。

  • MysqlTypes:您可以将其插入任何类型。您需要这个,因为条件子句是一个准备子句(即所有值都被替换为占位符(?)),并且您将获得一个包含搜索目标的Vec,目标按照子句中“?”的出现顺序排列。有关详细信息,请参阅示例。另外,如果您没有为某些键插入类型,则MysqlType::StringLike(String)是默认类型。

Postgres ["postgres"]

除了某些类型外,与Mysql非常相似。

这些类型可以直接用于sqlx^0.5绑定,除了sqlx本身定义的几个类型,例如PgIntervalPgMoney等。

特殊类型

  • VarBit:target需要以格式<u64>。例如,1024表示比特0000010000000000

依赖关系

~3–5.5MB
~100K SLoC