Files
timelapse-backend/controllers/projectController.js

72 lines
2.4 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;
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' });
});
};