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 fileUtils.createProjectDirectory(name) .then(folderPath => { // Ajouter le projet à la base de données const query = 'INSERT INTO public.projects (name, description, folder_path, start_date, status) VALUES ($1, $2, $3, $4, $5) RETURNING id'; return db.query(query, [name, description, folderPath, startDate, status]); }) .then(result => { 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; // Récupérer le chemin du dossier du projet const query = 'SELECT folder_path 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.' }); } const folderPath = result.rows[0].folder_path; // Supprimer le projet de la base de données return db.query('DELETE FROM public.projects WHERE id = $1', [projectId]) .then(() => { // Supprimer le dossier du projet return fileUtils.deleteProjectDirectory(folderPath); }); }) .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' }); }); };