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

surql-definition-macros

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

3个不稳定版本

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

#1521 in 过程宏

Download history 321/week @ 2024-05-02 43/week @ 2024-05-09 5/week @ 2024-05-16 10/week @ 2024-05-23 8/week @ 2024-05-30 129/week @ 2024-06-06 25/week @ 2024-06-13

每月下载 56
用于 surql-definition

MIT 许可证

29KB
485

surql-definition-macros

surql-definition-macros 是一个Rust过程宏crate,简化了生成SurrealDB表和字段定义的过程。该crate提供了 SurQLDefinition derive宏,它可以根据注解的Rust结构体自动创建SurrealDB模式查询。

目录

  1. 功能
  2. 安装
  3. 用法
  4. 示例
    1. 简单用法
    2. 高级用法
  5. 验证
  6. 许可证
  7. 链接

功能

  • 自动从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_validationcompile_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