diff --git a/routes/capture_system.js b/routes/capture_system.js index 0df53d2..cbab946 100644 --- a/routes/capture_system.js +++ b/routes/capture_system.js @@ -73,10 +73,20 @@ async function confirm_stop_procedure() { // côté caméra idle: true, } await database_manager.capture.edit_camera(1, new_settings); + let project_settings = { + status: 0, + } + let current_project = await database_manager.project.find_current_rendering_project(); + if (current_project) { + await database_manager.project.edit_project_by_id(current_project.id, project_settings); + console.log("Project : " + current_project.id + " stopped."); + } else { + console.log("No project to stop."); + } console.log("Camera stopped."); } -async function start_procedure(interval, nb_images) { +async function start_procedure(project_id, interval, nb_images) { let new_settings = { interval: interval, nb_images: nb_images, @@ -85,6 +95,16 @@ async function start_procedure(interval, nb_images) { } console.log("Starting Procedure with settings:", new_settings); await database_manager.capture.edit_camera(1, new_settings); + let project_settings = { + status: 1, + } + let existing_project = await database_manager.project.find_current_rendering_project(); + if (existing_project) { + throw new Error("A project is already being rendered. Please stop it before starting a new one."); + } else { + await database_manager.project.edit_project_by_id(project_id, project_settings); + console.log("Project : " + project_id + " started."); + } console.log("Camera started."); } @@ -105,12 +125,12 @@ async function deactivate_maintenance() { } router.post('/procedure/start', async (req, res) => { - const { interval, nb_images } = req.body; + const { project_id, interval, nb_images } = req.body; if (!interval || !nb_images) { return res.status(400).json({ error: 'Interval and number of images are required' }); } try { - await start_procedure(interval, nb_images); + await start_procedure(project_id, interval, nb_images); res.json({ message: 'Camera started successfully', settings: { interval, nb_images } }); } catch (error) { serverError.sendError('Error starting camera procedure:', res, error, 500); @@ -173,6 +193,8 @@ router.post('/camera/stop', async (req, res) => { * schema: * type: object * properties: + * project_id: + * type: integer * interval: * type: integer * nb_images: diff --git a/src/database/database_manager.js b/src/database/database_manager.js index 675fc31..9124f28 100644 --- a/src/database/database_manager.js +++ b/src/database/database_manager.js @@ -160,7 +160,11 @@ const project = { delete_project_by_id: handleDatabaseOperation(async (id) => { const query = `DELETE FROM projects WHERE id = $1;`; await db.query(query, [id]); - }) + }), + find_current_rendering_project: handleDatabaseOperation(async () => { + const query = `SELECT * FROM projects WHERE status = 1;`; + return (await db.query(query)).rows[0]; + }), }; const measurement = {