diff --git a/api/.env.example b/api/.env.example new file mode 100644 index 0000000..c7f296e --- /dev/null +++ b/api/.env.example @@ -0,0 +1,6 @@ +DB_HOST=localhost +DB_USER=user +DB_PASSWORD=password +DB_NAME=dbName + +PORT=5000 \ No newline at end of file diff --git a/api/controller/folder.controller.js b/api/controller/folder.controller.js index 80d9243..a6f0e6a 100644 --- a/api/controller/folder.controller.js +++ b/api/controller/folder.controller.js @@ -63,7 +63,7 @@ exports.createFolder = async (req, res) => { exports.updateFolder = async (req, res) => { - const folderId = req.params.id + const folderId = req.params.id; const jsonFolder = req.body; await folder.update({ @@ -79,6 +79,18 @@ exports.updateFolder = async (req, res) => { res.status(200).json("ok"); } +exports.deleteFolder = async (req, res) => { + const folderId = req.params.id; + + await folder.destroy({ + where: { + folderId:folderId, + }, + }); + + res.status(200).json("ok"); +} + function findByValue(list, key, value) { for (el of list) { diff --git a/api/models/folder.model.js b/api/models/folder.model.js index 455d9ac..d9af7a8 100644 --- a/api/models/folder.model.js +++ b/api/models/folder.model.js @@ -23,6 +23,6 @@ const folder = db.define('Folders', { }, }); -folder.hasMany(folder, { as: 'subFolders', foreignKey: 'folderParent' }); +folder.hasMany(folder, { as: 'subFolders', foreignKey: 'folderParent', onDelete: 'CASCADE' }); module.exports = folder; diff --git a/api/routes/folder.routes.js b/api/routes/folder.routes.js index 1a8516b..b9bbb90 100644 --- a/api/routes/folder.routes.js +++ b/api/routes/folder.routes.js @@ -9,5 +9,7 @@ router.get('/folders/:id', folderController.getFoldersById); router.post('/folders', folderController.createFolder); router.put('/folders/:id', folderController.updateFolder); +router.delete('/folders/:id', folderController.deleteFolder); + module.exports = router; \ No newline at end of file diff --git a/db/init.sql b/db/init.sql new file mode 100644 index 0000000..586c864 --- /dev/null +++ b/db/init.sql @@ -0,0 +1,34 @@ +DROP TABLE IF EXISTS Pages; +DROP TABLE IF EXISTS Folders; + +-- CREATE TABLES + +CREATE TABLE Folders ( + folderId INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + folderName VARCHAR(50) NOT NULL, + folderParent INT UNSIGNED, + + CONSTRAINT sf_folderParent_folderId FOREIGN KEY (folderParent) REFERENCES Folders(folderId) ON DELETE CASCADE +); + +CREATE TABLE Pages ( + pageId INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + pageTitle VARCHAR(50) NOT NULL, + pageFolder INT UNSIGNED, + pageContent TEXT, + + CONSTRAINT fk_pages_folder FOREIGN KEY (pageFolder) REFERENCES Folders(folderId) ON DELETE CASCADE +); + +-- Populate Tables + + +INSERT INTO Folders (folderId, folderName, folderParent) VALUES +(1, "animaux", NULL), +(2, "mamifère", 1), +(3, "plantes", NULL); + +INSERT INTO Pages (pageTitle, pageFolder, pageContent) VALUES +('Vache', 2, 'La vache est un mamifères'), +('Pin des Landes', NULL, 'Le pin des landes est un pin que lon retrouve dans les landes'), +('Le lézard', 1, 'Le lézard est un reptile à sang froid'); \ No newline at end of file