3 个版本 (稳定版)
1.1.0 | 2024年3月25日 |
---|---|
1.0.0 | 2024年3月25日 |
0.1.0 | 2024年3月25日 |
#2270 在 数据库接口
14KB
113 代码行
宏 DieselLinker
使用指南
本指南将向您展示如何使用宏 DieselLinker
来简化在 Rust Diesel 应用中定义表之间关系的过程。
先决条件
- 请确保将
Diesel
添加到您的Cargo.toml
依赖项中。 - 需要将宏
DieselLinker
添加为依赖项。
[dependencies]
diesel = { version = "1.4", features = ["postgres"] }
diesel_linker = "0.1"
第1步:定义您的模型
首先定义与数据库中的表相对应的 Rust 模型。
#[derive(Queryable)]
struct User {
pub id: i32,
pub name: String,
// autres champs...
}
#[derive(Queryable)]
struct Post {
pub id: i32,
pub user_id: i32, // Clé étrangère vers la table User
pub title: String,
// autres champs...
}
第2步:使用 DieselLinker 宏
将宏 DieselLinker
应用于您的模型以定义表之间的关系。
对于一对一多关系的 One-to-Many
如果用户可以有多个帖子,您可以定义如下关系
use diesel_linker::DieselLinker;
#[derive(DieselLinker)]
#[relation(type = "one-to-many", table1 = "users", table2 = "posts", column1 = "id", column2 = "user_id")]
struct User {
// Définitions de champs...
}
#[derive(DieselLinker)]
#[relation(type = "many-to-one", table1 = "users", table2 = "posts", column1 = "id", column2 = "user_id")]
struct Post {
// Définitions de champs...
}
此语法表示 users
表与 posts
表之间存在 "one-to-many
" 关系,其中 column1
(users 表中的 id) 是主键,而 column2
(posts 表中的 user_id) 是外键。
第3步:编译和测试
在将宏应用于您的结构后,编译项目以确保宏按预期工作。
cargo build
此外,执行测试以确认关系被正确处理,并且您可以执行所需的数据库操作。
结论
DieselLinker 宏旨在简化 Diesel 应用中表之间关系的定义。通过遵循上述步骤,您可以轻松定义和管理数据库模型之间的关系。
依赖项
~28MB
~607K SLoC