const db = require('../db'); const fileUtils = require('../utils/fileUtils'); /** * Crée un nouveau projet et un dossier associé. * @param {Object} req - La requête contenant les détails du projet. * @param {Object} res - La réponse à renvoyer au client. */ exports.createProject = (req, res) => { const { name, description = '' } = req.body; const startDate = new Date(); const status = 0; // Créer un dossier pour le projet (async () => { try { await fileUtils.createProjectDirectory(name); const query = 'INSERT INTO public.projects (name, description, start_date, status) VALUES ($1, $2, $3, $4) RETURNING id'; const result = await db.query(query, [name, description, startDate, status]); res.status(201).json({ message: 'Projet créé avec succès', id: result.rows[0].id }); } catch (err) { console.error('Erreur lors de la création du projet:', err); res.status(500).json({ error: 'Erreur serveur' }); } })(); }; /** * Récupère tous les projets. * @param {Object} req - La requête. * @param {Object} res - La réponse à renvoyer au client. */ exports.getAllProjects = (req, res) => { const query = 'SELECT * FROM public.projects'; db.query(query) .then(result => { res.json(result.rows); }) .catch(err => { console.error('Erreur lors de la récupération des projets:', err); res.status(500).json({ error: 'Erreur serveur' }); }); }; /** * Supprime un projet et son dossier associé. * @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) => { const projectId = req.params.id; // Supprimer le projet de la base de données const query = 'DELETE FROM public.projects WHERE id = $1'; db.query(query, [projectId]) .then(result => { if (result.rowCount === 0) { return res.status(404).json({ error: 'Aucun projet trouvé avec cet ID.' }); } // 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' }); }); };