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}`);