From ed853ab0f7c52f8ad77bad6b251c7ba70a1bcf4c Mon Sep 17 00:00:00 2001 From: Kerboul Date: Thu, 3 Apr 2025 08:41:25 +0200 Subject: [PATCH] =?UTF-8?q?Rendre=20plusieurs=20fonctions=20asynchrones=20?= =?UTF-8?q?pour=20am=C3=A9liorer=20la=20gestion=20des=20erreurs=20et=20ass?= =?UTF-8?q?urer=20un=20traitement=20correct=20des=20op=C3=A9rations=20li?= =?UTF-8?q?=C3=A9es=20=C3=A0=20la=20cam=C3=A9ra=20et=20aux=20projets.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/cameraRoutes.js | 38 +++++++++++++++++--------------------- src/data/filewatcher.js | 10 ++-------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/routes/cameraRoutes.js b/routes/cameraRoutes.js index 6b9fce8..51be162 100644 --- a/routes/cameraRoutes.js +++ b/routes/cameraRoutes.js @@ -13,7 +13,7 @@ var defaultCaptureInterval = 5; // minutes var defaultMaintenance = 0; var defaultActive = 0; // 0 = pas de capture, 1 = capture en cours -function initCamera() { +async function initCamera() { const query = 'SELECT * FROM public.camera WHERE id = $1'; const values = [1]; @@ -69,7 +69,7 @@ async function getCamera() { } } -function printCameraStatus() { +async function printCameraStatus() { let camera = getCamera(); console.log('Statut de la caméra:'); console.log('Intervalle de capture:', camera.captureInterval, 'minutes'); @@ -78,7 +78,7 @@ function printCameraStatus() { console.log('-----------------------------------'); } -function isCameraOccupied() { +async function isCameraOccupied() { try { const query = 'SELECT id FROM public.projects WHERE status = $1 LIMIT 1'; const values = [1]; @@ -100,8 +100,7 @@ function isCameraOccupied() { } } -function getCurrentProject() { - // retourner le projet en cours (status 1) +async function getCurrentProject() { try { const query = 'SELECT * FROM public.projects WHERE status = $1 LIMIT 1'; const values = [1]; @@ -126,8 +125,7 @@ function getCurrentProject() { } } -function resetProjectStatus() { - // repasser tous les projets en status 1 à 2 (stopped) +async function resetProjectStatus() { const query = 'UPDATE public.projects SET status = $1 WHERE status = $2'; const values = [2, 1]; @@ -140,8 +138,7 @@ function resetProjectStatus() { }); } -function activateCamera() { - // activer la caméra (status 1) +async function activateCamera() { const query = 'UPDATE public.camera SET active = $1 WHERE id = $2'; const values = [1, 1]; @@ -154,8 +151,7 @@ function activateCamera() { }); } -function deactivateCamera() { - // désactiver la caméra (status 0) +async function deactivateCamera() { const query = 'UPDATE public.camera SET active = $1 WHERE id = $2'; const values = [0, 1]; @@ -180,8 +176,8 @@ async function changeProjectStatus(projectId, status) { } } -initCamera(); -printCameraStatus(); +await initCamera(); +await printCameraStatus(); /** * @swagger @@ -222,7 +218,7 @@ router.get('/camera/status', async (req, res) => { } }); -function setCameraSettings(interval, maintenance) { +async function setCameraSettings(interval, maintenance) { try { const query = ` UPDATE public.camera @@ -253,21 +249,21 @@ async function startProcedure(projectId, interval, maintenance) { if (cameraOccupied) { return { error: 'Camera is occupied by another project' }; } else { - activateCamera(); - setCameraSettings(interval, maintenance); - changeProjectStatus(projectId, 1); // changer le statut du projet en cours à 1 (en cours) + await activateCamera(); + await setCameraSettings(interval, maintenance); + await changeProjectStatus(projectId, 1); // changer le statut du projet en cours à 1 (en cours) console.log('Procédure de capture démarrée avec succès.'); return { message: 'Capture procedure started successfully' }; } } async function stopProcedure() { - var project = getCurrentProject(); + var project = await getCurrentProject(); console.log(project); if (project) { - resetProjectStatus(); // réinitialiser le statut du projet en cours - deactivateCamera(); // désactiver la caméra - changeProjectStatus(project.id, 2); // changer le statut du projet en cours à 2 (terminé) + await resetProjectStatus(); // réinitialiser le statut du projet en cours + await deactivateCamera(); // désactiver la caméra + await changeProjectStatus(project.id, 2); // changer le statut du projet en cours à 2 (terminé) console.log('Procédure de capture arrêtée avec succès.'); return { message: 'Capture procedure stopped successfully' }; } else { diff --git a/src/data/filewatcher.js b/src/data/filewatcher.js index 54117f3..28d2a5d 100644 --- a/src/data/filewatcher.js +++ b/src/data/filewatcher.js @@ -7,12 +7,9 @@ let localCounter = 0; async function checkAndRemoveInvalidEntries() { localCounter = 0; - //console.log('[INFO] Vérification et suppression des entrées invalides...'); try { const measurementsRes = await db.query('SELECT id, path FROM measurements'); - //console.log('Fetched measurements:', measurementsRes.rows); for (const row of measurementsRes.rows) { - //console.log('Checking file path:', row.path); if (!fs.existsSync(row.path)) { await db.query('DELETE FROM measurements WHERE id = $1', [row.id]); console.log(`Deleted invalid measurement entry with id: ${row.id}`); @@ -26,16 +23,13 @@ async function checkAndRemoveInvalidEntries() { for (const imagePath of allImages) { const entryRes = await db.query('SELECT id FROM measurements WHERE path = $1', [imagePath]); if (entryRes.rows.length === 0) { - // Remove the file if the entry does not exist fs.unlinkSync(imagePath); console.log(`Deleted file at path: ${imagePath} as its database entry does not exist`); - localCounter++; // Increment counter if entry is deleted + localCounter++; } } if (localCounter > 0) { - //console.log(`[INFO] ${localCounter} entrées ont été modifiées`); - } else { - //console.log('[INFO] Aucune entrée n\'a été modifiée.'); + console.log(`[INFO] ${localCounter} entrées ont été modifiées`); } } catch (err) { console.error('Error checking and removing invalid entries:', err);