📄️ Introduction
La gestion des projets est relativement simple puisque ces derniers n'impliquent pas de relations ou de dépendances envers d'autres tables.
📄️ 35-1 Modification de l'entité issue (ORM)
Vous devriez déjà avoir une entité vide pour Issue, puisque dans le niveau Premier module nous avons créé la ressource Issue à l'aide du raccourci nest g resource.
📄️ 35-2 Définir une relation
Il est maintenant temps de définir la relation entre une issue et un projet. Peut-être avez-vous remarqué au niveau précédent que nous n'avons pas ajouté de colonne dans la table issues pour faire référence au projet (ex.: projetId).
📄️ 35-3 Contrôleur IssuesController et route imbriquée
Fin d'obtenir une liste d'issues, en utilisant Supabase, il aurait été possible d'effectuer une requête GET vers /issues, tout en passant un paramètre params pour préciser le projet. Par exemple projet_id: eq.3.
📄️ 35-4 Obtenir une liste d'issues
Ajouter des données de test
📄️ 35-5 Créer une relation
Ensuite, comment lors de la création, associer une issue à un projet?
📄️ 35-6 Vérifier l'existence du parent
Dans le contrôleur, avant de faire la requête de création, on pourrait vouloir vérifier que la ressource parente existe (un projet).
📄️ 35-7 Utiliser un service d'un autre module
NestJS sépare les fonctionnalités en différents modules. Par exemple, pour le moment, nous avons les deux modules suivants:
📄️ 35-8 Mise à jour d'une relation
Pour la mise à jour, il y a peu de changements par rapport à une entité normale sans relation.
📄️ 35-9 Obtenir et supprimer une issue
Pour l'obtention (findOne) et supprimer (remove), il n'y a pas vraiment de différences majeures avec un projet (ressource sans relation). Ces deux méthodes ne seront donc pas abordées directement pour les issues.
📄️ 35-10 ON DELETE CASCADE
Un enjeu que vous aurez si vous tentez de supprimer un projet qui possède des issues est que les issues sont dépendantes du projet (contrainte de clé étrangère FK).