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,
}
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:

View File

@@ -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 = {