#surrealdb #schema #derive #surreal #generate #proc-macro

surql-definition

A Rust过程宏,用于生成SurrealDB表和字段定义

2 个版本

0.2.1 2024年5月7日
0.2.0 2024年5月7日

#667数据库接口

MIT 许可协议

12KB
72

surql-definition

surql-definition 是一个Rust crate,提供生成SurrealDB表和字段定义的统一接口。它从 surql-definition-macrossurql-definition-core 中导出功能。

目录

  1. 特性
  2. 安装
  3. 使用
  4. 示例
  5. 验证
  6. 许可协议
  7. 链接

特性

  • 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