diff --git a/routes/cameraRoutes.js b/routes/cameraRoutes.js new file mode 100644 index 0000000..b26d2d1 --- /dev/null +++ b/routes/cameraRoutes.js @@ -0,0 +1,109 @@ +const express = require('express'); +const router = express.Router(); +import db from '../../db.js'; +const measureManager = require('../src/measure/measureManager'); +const serverError = require('../utils/serverError'); + +// Status du Projet : +// 0 = En attente de capture +// 1 = En cours de capture +// 2 = Capture terminée + +const minInterval = 3; // Minutes +const maxInterval = 60; // Minutes + +var captureProjectID = -1; +var captureInterval = 0; // Minutes + +function startProcedure(projectId, interval) { + console.log('Démarrage de la procédure de capture'); + captureProjectID = projectId; + if (interval < minInterval) { + throw new Error('L\'intervalle de capture doit être supérieur ou égal à ' + minInterval + ' minutes.'); + } + if (interval > maxInterval) { + throw new Error('L\'intervalle de capture doit être inférieur ou égal à ' + maxInterval + ' minutes.'); + } + captureInterval = interval; + console.log('Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.'); + return { message: 'Procédure de capture démarrée avec succès, projet ID: ' + projectId + ', interval: ' + interval + ' minutes.' }; +} + +function stopProcedure() { + console.log('Arrêt de la procédure de capture'); + return { message: 'Procédure de capture arrêtée avec succès.' }; +} + +router.post('/procedure/start/', async (req, res) => { + const { projectId, interval } = req.body; + try { + const result = startProcedure(projectId, interval); + res.status(200).json(result); + } catch (err) { + serverError(res, err); + } +} +); + +router.get('/procedure/stop/', async (req, res) => { + try { + const result = stopProcedure(); + res.status(200).json(result); + } catch (err) { + serverError(res, err); + } +}); + +/** + * @swagger + * /procedure/start/: + * post: + * summary: Start the capture procedure + * description: Starts the capture procedure with the given project ID and interval. + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * projectId: + * type: integer + * description: The ID of the project to start capturing. + * interval: + * type: integer + * description: The interval in minutes for the capture. + * responses: + * 200: + * description: Capture procedure started successfully. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * example: Procédure de capture démarrée avec succès, projet ID: 1, interval: 10 minutes. + * 500: + * description: Internal server error. + * + * /procedure/stop/: + * get: + * summary: Stop the capture procedure + * description: Stops the capture procedure. + * responses: + * 200: + * description: Capture procedure stopped successfully. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * example: Procédure de capture arrêtée avec succès. + * 500: + * description: Internal server error. + */ + +module.exports = router;