3个不稳定版本
0.2.1 | 2024年5月7日 |
---|---|
0.2.0 | 2024年5月7日 |
0.1.0 | 2024年5月5日 |
#1521 in 过程宏
每月下载 56 次
用于 surql-definition
29KB
485 行
surql-definition-macros
surql-definition-macros
是一个Rust过程宏crate,简化了生成SurrealDB表和字段定义的过程。该crate提供了 SurQLDefinition
derive宏,它可以根据注解的Rust结构体自动创建SurrealDB模式查询。
目录
功能
- 自动从Rust结构体生成SurrealDB表和字段定义。
- 支持灵活的类型、默认值、断言和权限。
- 提供运行时和编译时查询验证选项。
安装
将 surql-definition-macros
添加到您的 Cargo.toml
[dependencies]
surql-definition-macros = "0.2.1"
用法
要使用 surql-definition-macros
,只需在您的结构体上派生 SurQLDefinition
,并可选地使用提供的属性进行自定义
surql_table
: 指定表名。surql_field
: 配置字段属性,如类型、默认值和断言。surql_field_permissions
: 设置字段级权限。surql_table_permissions
: 设置表级权限。surql_query
: 定义自定义SurrealDB查询。
示例
简单用法
以下是一个基本示例,展示了如何使用 SurQLDefinition
生成具有各种原始类型的结构体的SurrealDB模式查询
use surql_definition_macros::SurQLDefinition;
#[derive(SurQLDefinition)]
struct SimpleStruct {
i32_val: i32,
bool_val: bool,
string_val: String,
}
assert_eq!(
SimpleStruct::schema_query(),
"DEFINE TABLE simple_struct; DEFINE FIELD i32_val ON simple_struct TYPE int; DEFINE FIELD bool_val ON simple_struct TYPE bool; DEFINE FIELD string_val ON simple_struct TYPE string;"
);
高级用法
在此示例中,ComplexStruct
展示了更高级的功能,如灵活的类型、自定义字段类型和默认值
use surql_definition_macros::SurQLDefinition;
#[derive(SurQLDefinition)]
struct ComplexStruct {
#[surql_field(TYPE = "float", DEFAULT = "3.14")]
float_val: f64,
#[surql_field(TYPE = "string", FLEXIBLE)]
flexible_string: String,
}
assert_eq!(
ComplexStruct::schema_query(),
"DEFINE TABLE complex_struct; DEFINE FIELD float_val ON complex_struct TYPE float DEFAULT 3.14; DEFINE FIELD flexible_string ON complex_struct FLEXIBLE TYPE string;"
);
验证
surql-definition-macros
使用 runtime_query_validation
和 compile_query_validation
功能支持运行时和编译时查询验证,分别。这些功能依赖于 surrealdb-core
crate 进行查询解析。
要启用验证,更新您的 Cargo.toml
[dependencies]
surql-definition-macros = { version = "0.2.1", features = ["runtime_query_validation"] }
许可证
本项目采用MIT许可证。请参阅LICENSE文件以获取详细信息。
链接
依赖项
~0.2–17MB
~245K SLoC