#surrealdb #proc-macro #function #path #data-store #fn #surql

macro surrealdb_functions

用于surrealdb函数(fn::*)的过程宏

4个版本

0.0.4 2023年7月23日
0.0.3 2023年7月23日
0.0.2 2023年7月23日
0.0.1 2023年7月22日

#604 in 过程宏

Download history 1/week @ 2024-03-27 1/week @ 2024-04-03 94/week @ 2024-06-05 17/week @ 2024-06-12

每月110次下载

MIT/Apache

69KB
2K SLoC

SurrealDB Functions Crates.io Docs.rs

这是一个过程宏crate,给定一个.surql文件或.surql文件文件夹的路径,将解析其中定义的DEFINE FUNCTION fn::并输出包装它们的rust函数。它还会生成一个引导函数,将定义的函数存储到数据库中,最后如果函数是嵌套的(fn::a::nested::function)它将被放在一个嵌套模块中。

用法

示例用法可以在examples/main.rs中找到,但简而言之,其主要用法如下

include_fn!{
    driver as is;
    datastore as ds_$;
    "$CARGO_MANIFEST_DIR/tests/main.surql"
}

在调用宏时,您需要提供绑定应使用的命名:driver/datastore as is/prefix_$/$_suffix

  • is不会对方法名应用任何更改。
  • prefix_$/$_suffix将替换$,实际上是在其前缀/后缀(例如:prefix_greet / greet_suffix

必须定义driverdatastore之一。

  • driver将生成常规的Surreal<C>绑定。
  • datastore将会为更底层的仅本地可用的surrealdb::kvs::Datastore生成绑定。

如果两者都定义了,解析器将验证它们不冲突。(例如,你不能两者都是as is

最后,最后一个参数类型是文件/目录路径,如果提供了目录,它将被递归解析。

至少期望有一个有效的路径参数,但可以提供更多。所有解析的路径都将在内部存储在哈希集中,因此路径重复应该不是问题。

docs.rs的内容将在以后提供,现在可以阅读源代码或在我的surrealdb discord(与github上的handle相同)上问我。我对新功能和pull请求持开放态度。

组件说明

这是一个为surrealdb提供的工具宏,因此它期望用户依赖项中存在surrealdb。然而,这个crate本身并不依赖于surrealdb。

解析器说明

目前这个宏只有最小的surrealql解析器,用于解析自定义函数定义,但不包括其主体。

依赖项

~1.2–2MB
~39K SLoC