Skip to main content

Crate sz_orm_macros

Crate sz_orm_macros 

Source
Expand description

SZ-ORM Procedural Macros - compile-time SQL validation & derive macros

Provides:

  • sql_string! macro that validates SQL string literals at compile time. Errors like SELECT * FORM users or '; DROP TABLE are caught before the binary is built.
  • #[derive(Schema)] — auto-generate table structure info from a struct.
  • #[derive(Builder)] — auto-generate builder pattern code for a struct.

§Usage

use sz_orm_macros::sql_string;

// Basic usage
let sql = sql_string!("SELECT * FROM users WHERE id = 1"); // ✅ compiles

// With parameter count check
let sql = sql_string!("SELECT * FROM users WHERE id = ?");
                     params: 1);                          // ✅ compiles

// ❌ compile error: missing FROM
let sql = sql_string!("SELECT * users WHERE id = 1");

// ❌ compile error: SQL injection detected
let sql = sql_string!("SELECT * FROM users WHERE name = 'x' OR '1'='1'");

// ❌ compile error: parameter count mismatch
let sql = sql_string!("SELECT * FROM users WHERE id = ?");
                     params: 2);

§Derive macros

use sz_orm_macros::{Schema, Builder};

#[derive(Schema)]
#[table(name = "users")]
struct User {
    #[column(primary_key)]
    id: i64,
    name: String,
}

#[derive(Builder)]
struct Order {
    id: i64,
    total: f64,
}

Macros§

query
Compile-time SQL validation with optional real DB verification.
query_as
Compile-time SQL schema generator.
schema
sql_string
Compile-time SQL validation macro.
typed_query
Diesel 风格强类型 AST 宏(与 sql_string! / query! 并存)。

Derive Macros§

Builder
派生宏:自动生成构造器模式代码。
ColumnEnum
派生宏:从结构体字段自动生成 <StructName>Column 列名枚举(P2-2)。
Entity
派生宏:自动生成 sz_orm_core::Model trait 实现。
FromQueryResult
派生宏:自动生成 sz_orm_core::FromQueryResult trait 实现。
FromRow
派生宏:自动生成 sz_orm_core::queryable::FromRow trait 实现。
Relation
派生宏:自动生成 sz_orm_core::model::ModelExt trait 实现, 填充 relations() 映射,消除手写关系样板代码。
RelationTrait
#[derive(RelationTrait)] — 自动生成 RelationTrait 实现(P-F-2, v2.1.0)
Schema
派生宏:自动从 Rust 结构体生成表结构信息。
SqlType
派生宏:为 Rust 枚举自动生成 sz_orm_core::FromQueryResult trait 实现 和 to_value() 方法。