Expand description
JoinDSL — 类型安全的 JOIN 语法(Diesel 风格)
通过 TypedTable 和 TypedColumn 标记类型,
把 JOIN 的 ON 条件提升到类型系统,让“表 A 的列 vs 表 B 的列“
在编译期就能验证表归属,杜绝拼错表名/列名。
§设计
JoinBuilder链式构造 JOIN 子句JoinOn表达 ON 条件,左侧列必须属于左表,右侧列必须属于右表- 编译期通过
TypedColumn::Table关联约束校验
§用法
ⓘ
use sz_orm_query::typed::{TypedTable, TypedColumn};
use sz_orm_query::join_dsl::{JoinBuilder, JoinKind};
use sz_orm_macros::typed_query;
typed_query! {
table users { id: i64, name: String }
table orders { id: i64, user_id: i64, total: f64 }
}
// 编译期保证:users::col_id 与 orders::col_user_id 是 ON 条件两端
let join = JoinBuilder::new(JoinKind::Inner)
.table::<users::table>()
.on::<users::col_id, orders::col_user_id>()
.build();
assert_eq!(join, "INNER JOIN users ON users.id = orders.user_id");Structs§
- Join
Builder - JOIN 构造器(已指定 JOIN 类型,待指定右表)
- Join
Built - JOIN 已完整构造,可生成 SQL
- JoinOn
- JOIN 已指定右表,待指定 ON 条件
Enums§
- Join
Kind - JOIN 类型
Functions§
- cross_
join - 便捷函数:构造 CROSS JOIN
- full_
join - 便捷函数:构造 FULL OUTER JOIN
- inner_
join - 便捷函数:构造 INNER JOIN
- left_
join - 便捷函数:构造 LEFT JOIN
- right_
join - 便捷函数:构造 RIGHT JOIN