76 lines
2.8 KiB
JavaScript
76 lines
2.8 KiB
JavaScript
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;
|
|
|
|
// Créer un dossier pour le projet
|
|
fileUtils.createProjectFolder(name)
|
|
.then(folderPath => {
|
|
// Ajouter le projet à la base de données
|
|
const query = 'INSERT INTO public.projects (name, description, folder_path) VALUES ($1, $2, $3) RETURNING id';
|
|
return db.query(query, [name, description, folderPath]);
|
|
})
|
|
.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.deleteProjectFolder(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' });
|
|
});
|
|
}; |