54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
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<string>} - 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
|
|
}; |