query_as!() { /* proc-macro */ }Expand description
Compile-time SQL schema generator.
Parses a SQL CREATE TABLE statement and generates typed table declarations
equivalent to typed_query! { table ... }.
§Syntax
ⓘ
use sz_orm_macros::schema;
schema! {
"CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT)"
}生成与以下手动声明等价的代码:
ⓘ
typed_query! {
table users {
id: i64,
name: String,
email: Option<String>,
}
}类型化裸 SQL 查询宏(SQLx query_as! 风格)。
用法:query_as!(RecordType, "SELECT col1, col2 FROM table WHERE id = ?")
生成 sz_orm_core::queryable::QueryAs::<RecordType>::new("SELECT ...")。
在 db-verify feature + SZ_ORM_QUERY_VERIFY=1 环境下会连真 DB
执行 EXPLAIN 验证 SQL 合法性。
运行时列名验证(P0-2):QueryAs::fetch_all 会比对 DB 返回的列名
与 RecordType::row_desc()(由 #[derive(FromQueryResult)] 自动生成)。
若 SQL SELECT 列不在 struct 字段中,返回 DbError::QueryError。
§示例
ⓘ
#[derive(FromQueryResult)]
struct User { id: i64, name: String }
let q = query_as!(User, "SELECT id, name FROM users WHERE id = 1");
let users: Vec<User> = q.fetch_all(&mut conn).await?;