Skip to main content

Module join_dsl

Module join_dsl 

Source
Expand description

JoinDSL — 类型安全的 JOIN 语法(Diesel 风格)

通过 TypedTableTypedColumn 标记类型, 把 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§

JoinBuilder
JOIN 构造器(已指定 JOIN 类型,待指定右表)
JoinBuilt
JOIN 已完整构造,可生成 SQL
JoinOn
JOIN 已指定右表,待指定 ON 条件

Enums§

JoinKind
JOIN 类型

Functions§

cross_join
便捷函数:构造 CROSS JOIN
full_join
便捷函数:构造 FULL OUTER JOIN
inner_join
便捷函数:构造 INNER JOIN
left_join
便捷函数:构造 LEFT JOIN
right_join
便捷函数:构造 RIGHT JOIN