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:
@@ -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:
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
Reference in New Issue
Block a user