Refactor la suppression de projet pour utiliser async/await et améliorer la gestion des erreurs

This commit is contained in:
2025-01-14 17:27:50 +01:00
parent 2d9e0e34b1
commit d286998488
2 changed files with 25 additions and 19 deletions

View File

@@ -47,25 +47,23 @@ exports.getAllProjects = (req, res) => {
* @param {Object} req - La requête contenant l'ID du projet à supprimer. * @param {Object} req - La requête contenant l'ID du projet à supprimer.
* @param {Object} res - La réponse à renvoyer au client. * @param {Object} res - La réponse à renvoyer au client.
*/ */
exports.deleteProject = (req, res) => { exports.deleteProject = async (req, res) => {
const projectId = req.params.id; const projectId = req.params.id;
try {
// Supprimer le projet de la base de données // Supprimer le projet de la base de données
const deleteProjectQuery = 'DELETE FROM public.projects WHERE id = $1'; const deleteProjectQuery = 'DELETE FROM public.projects WHERE id = $1';
db.query(deleteProjectQuery, [projectId]) const result = await db.query(deleteProjectQuery, [projectId]);
.then(result => {
if (result.rowCount === 0) { if (result.rowCount === 0) {
return res.status(404).json({ error: 'Aucun projet trouvé avec cet ID.' }); return res.status(404).json({ error: 'Aucun projet trouvé avec cet ID.' });
} }
// Supprimer le dossier du projet // Supprimer le dossier du projet
return fileUtils.deleteProjectDirectory(projectId); await fileUtils.deleteProjectDirectory(projectId);
})
.then(() => {
res.status(200).json({ message: 'Projet supprimé avec succès' }); res.status(200).json({ message: 'Projet supprimé avec succès' });
}) } catch (err) {
.catch(err => {
console.error('Erreur lors de la suppression du projet:', err); console.error('Erreur lors de la suppression du projet:', err);
res.status(500).json({ error: 'Erreur serveur' }); res.status(500).json({ error: 'Erreur serveur' });
}); }
}; };

View File

@@ -25,7 +25,15 @@ function createProjectDirectory(projectId) {
function deleteProjectDirectory(projectId) { function deleteProjectDirectory(projectId) {
const projectDir = path.join(__dirname, `storage/${projectId}`); const projectDir = path.join(__dirname, `storage/${projectId}`);
if (fs.existsSync(projectDir)) { 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}`); console.log(`Directory deleted: ${projectDir}`);
} else { } else {
console.log(`Directory does not exist: ${projectDir}`); console.log(`Directory does not exist: ${projectDir}`);