From d286998488049ad843c4efc7f603455c6dc08844 Mon Sep 17 00:00:00 2001 From: Kerboul Date: Tue, 14 Jan 2025 17:27:50 +0100 Subject: [PATCH] =?UTF-8?q?Refactor=20la=20suppression=20de=20projet=20pou?= =?UTF-8?q?r=20utiliser=20async/await=20et=20am=C3=A9liorer=20la=20gestion?= =?UTF-8?q?=20des=20erreurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/projectController.js | 34 +++++++++++++++----------------- utils/fileUtils.js | 10 +++++++++- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/controllers/projectController.js b/controllers/projectController.js index 60f4b88..ea581aa 100644 --- a/controllers/projectController.js +++ b/controllers/projectController.js @@ -47,25 +47,23 @@ exports.getAllProjects = (req, res) => { * @param {Object} req - La requête contenant l'ID du projet à supprimer. * @param {Object} res - La réponse à renvoyer au client. */ -exports.deleteProject = (req, res) => { +exports.deleteProject = async (req, res) => { const projectId = req.params.id; - // Supprimer le projet de la base de données - const deleteProjectQuery = 'DELETE FROM public.projects WHERE id = $1'; - db.query(deleteProjectQuery, [projectId]) - .then(result => { - if (result.rowCount === 0) { - return res.status(404).json({ error: 'Aucun projet trouvé avec cet ID.' }); - } + try { + // Supprimer le projet de la base de données + const deleteProjectQuery = 'DELETE FROM public.projects WHERE id = $1'; + const result = await db.query(deleteProjectQuery, [projectId]); - // Supprimer le dossier du projet - return fileUtils.deleteProjectDirectory(projectId); - }) - .then(() => { - res.status(200).json({ message: 'Projet supprimé avec succès' }); - }) - .catch(err => { - console.error('Erreur lors de la suppression du projet:', err); - res.status(500).json({ error: 'Erreur serveur' }); - }); + if (result.rowCount === 0) { + return res.status(404).json({ error: 'Aucun projet trouvé avec cet ID.' }); + } + + // Supprimer le dossier du projet + await fileUtils.deleteProjectDirectory(projectId); + res.status(200).json({ message: 'Projet supprimé avec succès' }); + } catch (err) { + console.error('Erreur lors de la suppression du projet:', err); + res.status(500).json({ error: 'Erreur serveur' }); + } }; diff --git a/utils/fileUtils.js b/utils/fileUtils.js index e1d7b7c..7f350a0 100644 --- a/utils/fileUtils.js +++ b/utils/fileUtils.js @@ -25,7 +25,15 @@ function createProjectDirectory(projectId) { function deleteProjectDirectory(projectId) { const projectDir = path.join(__dirname, `storage/${projectId}`); if (fs.existsSync(projectDir)) { - fs.rmdirSync(projectDir, { recursive: true }); + fs.readdirSync(projectDir).forEach(file => { + const filePath = path.join(projectDir, file); + if (fs.lstatSync(filePath).isDirectory()) { + fs.rmdirSync(filePath, { recursive: true }); + } else { + fs.unlinkSync(filePath); + } + }); + fs.rmdirSync(projectDir); console.log(`Directory deleted: ${projectDir}`); } else { console.log(`Directory does not exist: ${projectDir}`);