const fs = require('fs'); const path = require('path'); const PROJECTS_DIR = path.join(__dirname, '../storage'); /** * Crée un dossier pour un projet donné. * @param {number} projectId - L'ID du projet. * @param {string} baseDir - Le répertoire de base où le dossier du projet sera créé. * @returns {Promise} - Le chemin du dossier créé. */ function createProjectDirectory(projectId) { return new Promise((resolve, reject) => { const projectDir = path.join(PROJECTS_DIR, `storage/${projectId}`); if (!fs.existsSync(projectDir)) { fs.mkdirSync(projectDir, { recursive: true }); } resolve(projectDir); }); } /** * Supprime le dossier d'un projet donné. * @param {number} projectId - L'ID du projet. * @param {string} baseDir - Le répertoire de base où le dossier du projet est situé. */ function deleteProjectDirectory(projectId) { const projectDir = path.join(PROJECTS_DIR, `storage/${projectId}`); if (fs.existsSync(projectDir)) { fs.rmdirSync(projectDir, { recursive: true }); } } /** * Synchronise les fichiers d'un projet dans son dossier. * @param {number} projectId - L'ID du projet. * @param {string} sourceDir - Le répertoire source des fichiers à synchroniser. * @param {string} baseDir - Le répertoire de base où le dossier du projet est situé. */ function syncProjectFiles(projectId, sourceDir) { const projectDir = path.join(PROJECTS_DIR, `storage/${projectId}`); if (fs.existsSync(sourceDir)) { fs.readdirSync(sourceDir).forEach(file => { const srcFile = path.join(sourceDir, file); const destFile = path.join(projectDir, file); fs.copyFileSync(srcFile, destFile); }); } } module.exports = { createProjectDirectory, deleteProjectDirectory, syncProjectFiles };