#relation #diesel #linker #proc-macro #macro #orm

macro diesel_linker

A procedural macro to link Diesel models

3 releases (stable)

1.1.0 Mar 25, 2024
1.0.0 Mar 25, 2024
0.1.0 Mar 25, 2024

#2357 in Database interfaces

MIT/Apache

14KB
113 lines

Guide d'utilisation de la Macro DieselLinker

Ce guide vous montre comment utiliser la macro DieselLinker pour faciliter la définition de relations entre les tables dans une application Rust utilisant Diesel.

Prérequis

  • Assurez-vous que Diesel est ajouté à vos dépendances dans Cargo.toml.
  • La macro DieselLinker doit être ajoutée comme dépendance.
[dependencies]
diesel = { version = "1.4", features = ["postgres"] }
diesel_linker = "0.1"

Étape 1 : Définir vos Modèles

Commencez par définir vos modèles Rust qui correspondent à vos tables dans la base de données.

#[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...
}

Étape 2 : Utiliser la Macro DieselLinker

Appliquez la macro DieselLinker à votre modèle pour définir la relation entre les tables.

Pour une Relation One-to-Many

Si un utilisateur peut avoir plusieurs posts, vous pouvez définir cette relation comme suit :

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...
}

Cette syntaxe indique que la table users a une relation "one-to-many" avec la table posts, où column1 (id dans users) est la clé primaire et column2 (user_id dans posts) est la clé étrangère.

Étape 3 : Compiler et Tester

Après avoir appliqué la macro à vos structures, compilez votre projet pour vous assurer que la macro fonctionne comme attendu.

cargo build

Effectuez également des tests pour confirmer que les relations sont correctement gérées et que vous pouvez effectuer des opérations liées à la base de données selon vos besoins.

Conclusion

La macro DieselLinker vise à simplifier la définition des relations entre les tables dans les applications Diesel. En suivant les étapes ci-dessus, vous pouvez facilement définir et gérer les relations entre vos modèles de base de données.

Dependencies

~31MB
~633K SLoC