2 个版本
0.2.1 | 2024年5月7日 |
---|---|
0.2.0 | 2024年5月7日 |
#667 在 数据库接口
12KB
72 行
surql-definition
surql-definition
是一个Rust crate,提供生成SurrealDB表和字段定义的统一接口。它从 surql-definition-macros
和 surql-definition-core
中导出功能。
目录
特性
- 从
surql-definition-macros
中导出SurQLDefinition
derive 宏。 - 从
surql-definition-core
中导出SurQLSchemaProducer
trait。 - 简化了定义和验证SurrealDB模式的过程。
安装
将 surql-definition
添加到您的 Cargo.toml
[dependencies]
surql-definition = "0.2.1"
使用
要使用 surql-definition
,按需导入相关项
use surql_definition::{SurQLDefinition, SurQLSchemaProducer};
示例
定义SurrealDB表
以下示例演示了如何使用 SurQLDefinition
宏定义一个SurrealDB表
use surql_definition::SurQLDefinition;
#[derive(SurQLDefinition)]
struct User {
id: u64,
name: String,
email: String,
}
assert_eq!(
User::schema_query(),
"DEFINE TABLE user; DEFINE FIELD id ON user TYPE int; DEFINE FIELD name ON user TYPE string; DEFINE FIELD email ON user TYPE string;"
);
使用 SurQLSchemaProducer
SurQLSchemaProducer
trait 允许您手动为结构体实现模式查询
use surql_definition::SurQLSchemaProducer;
struct Product;
impl SurQLSchemaProducer for Product {
fn schema_query() -> &'static str {
"DEFINE TABLE product;"
}
}
assert_eq!(Product::schema_query(), "DEFINE TABLE product;");
验证
surql-definition
通过 surql-definition-macros
提供的功能支持在运行时和编译时对生成的查询进行验证。
要启用验证,更新您的 Cargo.toml
[dependencies]
surql-definition = { version = "0.2.1", features = ["runtime_query_validation"] }
许可协议
本项目采用MIT许可协议。有关详细信息,请参阅 LICENSE 文件。
链接
依赖
~0.3–17MB
~231K SLoC