#关系 #柴油 #连接器 #过程宏 # #ORM

diesel_linker

用于链接 Diesel 模型的过程宏

3 个版本 (稳定版)

1.1.0 2024年3月25日
1.0.0 2024年3月25日
0.1.0 2024年3月25日

#2270数据库接口

MIT/Apache

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