Ajouter la définition d'une nouvelle entité Sequelize MailAddress.
Celle-ci contient :
address qui est une chaîne de caractère contenant l'adresse mail (faire en sorte que Sequelize vérifie la validité de ce champ)type qui peut prendre une valeur dans la liste suivante : 'home', 'work'Associer cette nouvelle entité avec l'entité Person de sorte que :
MailAddress appartient à PersonPerson dispose de plusieurs MailAddressFaire en sorte que les MailAddress d'une Person soient supprimées lors de la suppression de la Person.
Créer un module db.js qui s'occupe de l'initialisation de la connexion à la base de données (création de l'instance sequelize), de la définition des entités, puis qui exporte un objet qui contient les modèles définis :
module.exports = { Person, MailAddress };
Créer deux modules person_ctrl.js et mail_address_ctrl.js qui exportent un objet contenant les middlewares manipulant respectivement les enregistrements des entités Person et MailAddress.
Pour avoir accès aux modèles, ces modules vont charger le module db.js.
const db = require('./db');
module.exports = {
get_all: (req, res, next) => {
db.Person.findAll()
.then((people) => { ... })
.catch((err) => next(err));
},
...
};
Le programme principal charge les contrôleurs, puis configure l'ensemble des routes.
Ajouter au serveur HTTP la gestion des routes suivantes :
GET /person/:person_id/mailAddress : renvoie l'ensemble des addresses mail de la personne d'identifiant person_id sous la forme d'un tableau d'objets en JSONPOST /person/:person_id/mailAddress : ajoute une nouvelle entité MailAddress en base à la personne d'identifiant person_id à partir des données fournies en JSONGET /person/:person_id/mailAddress/:mail_address_id : renvoie l'adresse mail d'identifiant mail_address_id sous la forme d'un objet en JSON si elle appartient bien à la personne d'identifiant person_idPUT /person/:person_id/mailAddress/:mail_address_id : modifie l'adresse mail d'identifiant mail_address_id à partir des données fournies en JSON si elle appartient bien à la personne d'identifiant person_idDELETE /person/:person_id/mailAddress/:mail_address_id : supprime l'adresse mail d'identifiant mail_address_id si elle appartient bien à la personne d'identifiant person_idLes fonctions de ce contrôleur agissent toutes sur une entité MailAddress appartenant à une Person dont on connaît l'identifiant.
On ajoutera donc tout d'abord dans le contrôleur de Person une fonction qui va charger l'instance de la Person concernée au sein de l'objet représentant la requête courante (req) sous l'identifiant person.
Cette fonction load_by_id sera alors utilisée en tant que premier middleware dans la déclaration de toutes les routes citées ci-dessus.
Les fonctions du contrôleur mailAddressCtrl auront donc accès à l'instance de Person concernée dans le champ req.person.
On écrira dans ce contrôleur les fonctions get_all, create, get_by_id, update_by_id, delete_by_id.