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 likeSELECT * FORM usersor'; DROP TABLEare 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§
- migrate
migrate!宏 — 编译时创建迁移并验证 SQL 语法- 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-style strongly-typed AST macro (coexists with
sql_string!/query!).
Derive Macros§
- Builder
- Derive macro: auto-generates builder pattern code.
- Column
Enum - Derive macro: auto-generates a
<StructName>Columncolumn-name enum from struct fields (P2-2). - Entity
- Derive macro: auto-generates an
sz_orm_core::Modeltrait impl. - From
Query Result - Derive macro: auto-generates an
sz_orm_core::FromQueryResulttrait impl. - FromRow
- Derive macro: auto-generates an
sz_orm_core::queryable::FromRowtrait impl. - GraphQL
Model - Derive macro: auto-generates an
sz_orm_graphql::schema_gen::GraphQLModelInfoimpl. - Relation
- Derive macro: auto-generates an
sz_orm_core::model::ModelExttrait impl, populating therelations()map and eliminating hand-written relation boilerplate. - Relation
Trait #[derive(RelationTrait)]— auto-generates aRelationTraitimpl (P-F-2, v2.1.0)- Schema
- Derive macro: auto-generates table structure info from a Rust struct.
- SqlType
- Derive macro: auto-generates an
sz_orm_core::FromQueryResulttrait impl and ato_value()method for a Rust enum.