Ajout de la gestion des projets dans les procédures de démarrage et d'arrêt de la caméra, incluant la vérification de l'état du projet en cours et la mise à jour du statut du projet.

This commit is contained in:
2025-04-03 16:00:02 +02:00
parent 70ec69ba84
commit 45223bc670
2 changed files with 30 additions and 4 deletions

View File

@@ -73,10 +73,20 @@ async function confirm_stop_procedure() { // côté caméra
idle: true, idle: true,
} }
await database_manager.capture.edit_camera(1, new_settings); 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."); console.log("Camera stopped.");
} }
async function start_procedure(interval, nb_images) { async function start_procedure(project_id, interval, nb_images) {
let new_settings = { let new_settings = {
interval: interval, interval: interval,
nb_images: nb_images, nb_images: nb_images,
@@ -85,6 +95,16 @@ async function start_procedure(interval, nb_images) {
} }
console.log("Starting Procedure with settings:", new_settings); console.log("Starting Procedure with settings:", new_settings);
await database_manager.capture.edit_camera(1, 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."); console.log("Camera started.");
} }
@@ -105,12 +125,12 @@ async function deactivate_maintenance() {
} }
router.post('/procedure/start', async (req, res) => { 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) { if (!interval || !nb_images) {
return res.status(400).json({ error: 'Interval and number of images are required' }); return res.status(400).json({ error: 'Interval and number of images are required' });
} }
try { 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 } }); res.json({ message: 'Camera started successfully', settings: { interval, nb_images } });
} catch (error) { } catch (error) {
serverError.sendError('Error starting camera procedure:', res, error, 500); serverError.sendError('Error starting camera procedure:', res, error, 500);
@@ -173,6 +193,8 @@ router.post('/camera/stop', async (req, res) => {
* schema: * schema:
* type: object * type: object
* properties: * properties:
* project_id:
* type: integer
* interval: * interval:
* type: integer * type: integer
* nb_images: * nb_images:

View File

@@ -160,7 +160,11 @@ const project = {
delete_project_by_id: handleDatabaseOperation(async (id) => { delete_project_by_id: handleDatabaseOperation(async (id) => {
const query = `DELETE FROM projects WHERE id = $1;`; const query = `DELETE FROM projects WHERE id = $1;`;
await db.query(query, [id]); 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 = { const measurement = {