Refactor la gestion des mesures en remplaçant le gestionnaire de mesures par le gestionnaire de stockage. Ajouter des fonctions pour gérer les images et les chemins des mesures. Améliorer la gestion des erreurs et nettoyer le code.

This commit is contained in:
2025-04-03 11:03:10 +02:00
parent c3b2059428
commit 6077dfd716
6 changed files with 124 additions and 199 deletions

View File

@@ -1,6 +1,7 @@
const fs = require('fs').promises;
const path = require('path');
const PROJECTS_DIR = path.join('.');
const database_manager = require('../database/database_manager.js');
async function createFolder(name) {
const projectDir = path.join(PROJECTS_DIR, `${name}`);
@@ -89,22 +90,79 @@ async function deleteFile(name) {
}
}
async function handleFileOperation(operation, ...args) {
try {
return await operation(...args);
} catch (error) {
console.error(`[FILE OPERATION ERROR] ${error.message}`);
throw error;
}
}
const project = {
createProjectDirectory: async function (projectId) {
const projectPath = `${projectId}`;
await createFolder(projectPath);
await createFolder(`${projectPath}/images`);
await createFolder(`${projectPath}/videos`);
await handleFileOperation(createFolder, projectPath);
await handleFileOperation(createFolder, `${projectPath}/images`);
await handleFileOperation(createFolder, `${projectPath}/videos`);
console.log("[FILE] createProjectDirectory : " + projectPath);
},
deleteProjectDirectory: async function (projectId) {
const projectPath = `${projectId}`;
await deleteFolder(projectPath);
await handleFileOperation(deleteFolder, projectPath);
console.log("[FILE] deleteProjectDirectory : " + projectPath);
}
};
const measurement = {
get_measurement_image: async function (projectId, orderId) {
const projectPath = `${projectId}`;
const imagePath = `${projectPath}/images/${orderId}.jpg`;
console.log("[FILE] get_measurement_image : " + imagePath);
return await handleFileOperation(getFile, imagePath);
},
upload_measurement_image: async function (image, projectId, orderId) {
const projectPath = `${projectId}`;
const imagePath = `${projectPath}/images/${orderId}.jpg`;
console.log("[FILE] upload_measurement_image : " + imagePath);
await handleFileOperation(saveFile, imagePath, image.buffer);
return imagePath;
},
get_path_from_id: async function (projectId, orderId) {
const query = database_manager.measurement.get_measurement_by_project_and_order_id(projectId, orderId);
return query.path;
},
get_path_list: async function (IdList, projectId) {
let parsedIdList;
try {
parsedIdList = JSON.parse(IdList);
} catch (e) {
console.error("Error parsing IdList:", e);
return [];
}
const pathList = [];
for (const orderId of parsedIdList) {
const path = await this.get_path_from_id(projectId, orderId);
pathList.push(path);
}
return pathList;
},
}
const video = {
get_video: async function (projectId, orderId) {
const projectPath = `${projectId}`;
const videoPath = `${projectPath}/videos/${orderId}.mp4`;
console.log("[FILE] get_video : " + videoPath);
return await handleFileOperation(getFile, videoPath);
}
}
module.exports = {
createFolder,
deleteFolder,
@@ -112,5 +170,7 @@ module.exports = {
saveFile,
getFile,
deleteFile,
project
project,
measurement,
video
};