From 9d9868e26b97466bd300a87fc4dd039777099ef2 Mon Sep 17 00:00:00 2001 From: dakerboul Date: Thu, 13 Mar 2025 09:06:38 +0100 Subject: [PATCH] =?UTF-8?q?Supprimer=20la=20documentation=20Swagger=20obso?= =?UTF-8?q?l=C3=A8te=20dans=20plusieurs=20fichiers=20de=20routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/cameraRoutes.js | 55 +-- routes/imageRoutes.js | 99 ----- routes/measurementRoutes.js | 196 --------- routes/projectRoutes.js | 122 ------ routes/swagger_routes.js | 772 +++++++++++++++++++++++++++++++++++- routes/uploadRoutes.js | 48 --- routes/videoRoutes.js | 248 ------------ 7 files changed, 773 insertions(+), 767 deletions(-) diff --git a/routes/cameraRoutes.js b/routes/cameraRoutes.js index 5cede79..6c00f1f 100644 --- a/routes/cameraRoutes.js +++ b/routes/cameraRoutes.js @@ -12,39 +12,7 @@ const minInterval = 3; // Minutes var captureProjectID = -1; var captureInterval = 0; // Minutes -/** - * @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. - */ + router.post('/procedure/start/', async (req, res) => { const { projectId, interval } = req.body; try { @@ -115,26 +83,7 @@ function stopProcedure() { return { message: 'Procédure de capture arrêtée avec succès, projet ID: ' + oldProjectID + ', interval: ' + oldInterval + ' minutes.' }; } -/** - * @swagger - * /procedure/stop/: - * post: - * 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. - */ + router.post('/procedure/stop/', async (req, res) => { try { const result = stopProcedure(); diff --git a/routes/imageRoutes.js b/routes/imageRoutes.js index 755bf1f..8643206 100644 --- a/routes/imageRoutes.js +++ b/routes/imageRoutes.js @@ -7,22 +7,6 @@ const dbTester = require('../test/tester'); const db = require('../db'); const serverError = require('../utils/serverError'); -/** - * @swagger - * /smile: - * get: - * summary: Retrieve a smile image - * responses: - * 200: - * description: A smile image - * content: - * image/jpeg: - * schema: - * type: string - * format: binary - * 404: - * description: Image not found - */ router.get('/smile', (req, res) => { const imagePath = dbTester.getSmileImage(); fs.access(imagePath, fs.constants.F_OK, (err) => { @@ -34,35 +18,6 @@ router.get('/smile', (req, res) => { }); }); -/** - * @swagger - * /images/{projectId}/{orderId}: - * get: - * summary: Retrieve an image by project and order ID - * parameters: - * - in: path - * name: projectId - * required: true - * schema: - * type: string - * description: The project ID - * - in: path - * name: orderId - * required: true - * schema: - * type: string - * description: The order ID - * responses: - * 200: - * description: An image file - * content: - * application/octet-stream: - * schema: - * type: string - * format: binary - * 404: - * description: Image not found - */ router.get('/images/:projectId/:orderId', (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; @@ -86,29 +41,6 @@ router.get('/images/:projectId/:orderId', (req, res) => { }); -/** - * @swagger - * /images/{measurementId}: - * get: - * summary: Retrieve an image by measurement ID - * parameters: - * - in: path - * name: measurementId - * required: true - * schema: - * type: string - * description: The measurement ID - * responses: - * 200: - * description: An image file - * content: - * application/octet-stream: - * schema: - * type: string - * format: binary - * 404: - * description: Image not found - */ router.get('/images/:measurementId', (req, res) => { const measurementId = req.params.measurementId; const query = 'SELECT path FROM public.measurements WHERE id = $1'; @@ -130,37 +62,6 @@ router.get('/images/:measurementId', (req, res) => { }); }); -/** - * @swagger - * /preview/{projectId}/{orderId}: - * get: - * summary: Retrieve a preview of an image by project and order ID - * parameters: - * - in: path - * name: projectId - * required: true - * schema: - * type: string - * description: The project ID - * - in: path - * name: orderId - * required: true - * schema: - * type: string - * description: The order ID - * responses: - * 200: - * description: A resized preview of the image - * content: - * image/jpeg: - * schema: - * type: string - * format: binary - * 404: - * description: Image not found - * 500: - * description: Internal Server Error - */ router.get('/preview/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; diff --git a/routes/measurementRoutes.js b/routes/measurementRoutes.js index 911e880..5d71187 100644 --- a/routes/measurementRoutes.js +++ b/routes/measurementRoutes.js @@ -4,38 +4,6 @@ const db = require('../db'); const measureManager = require('../src/measure/measureManager'); const serverError = require('../utils/serverError'); -/** - * @swagger - * /measurements: - * get: - * summary: Récupérer toutes les mesures - * description: Récupère toutes les mesures de la base de données. - * responses: - * 200: - * description: Une liste de mesures. - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * properties: - * id: - * type: integer - * project_id: - * type: integer - * timestamp: - * type: string - * format: date-time - * image_path: - * type: string - * temperature: - * type: number - * humidity: - * type: number - * 500: - * description: Erreur serveur. - */ router.get('/measurements', (req, res) => { const query = 'SELECT * FROM public.measurements'; db.query(query, (err, results) => { @@ -46,45 +14,6 @@ router.get('/measurements', (req, res) => { }); }); -/** - * @swagger - * /measurements/{id}: - * get: - * summary: Récupérer une mesure par ID - * description: Récupère une mesure spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID de la mesure - * responses: - * 200: - * description: Une mesure. - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: integer - * project_id: - * type: integer - * timestamp: - * type: string - * format: date-time - * image_path: - * type: string - * temperature: - * type: number - * humidity: - * type: number - * 400: - * description: ID de mesure invalide. - * 500: - * description: Erreur serveur. - */ router.get('/measurements/:id', (req, res) => { const measurementId = req.params.id; if (!measurementId || isNaN(measurementId)) { @@ -99,51 +28,6 @@ router.get('/measurements/:id', (req, res) => { }); }); -/** - * @swagger - * /measurements/{projectId}/{orderId}: - * get: - * summary: Récupérer une mesure par project ID et order ID - * description: Récupère une mesure spécifique en utilisant le project ID et order ID. - * parameters: - * - in: path - * name: projectId - * schema: - * type: integer - * required: true - * description: ID du projet - * - in: path - * name: orderId - * schema: - * type: integer - * required: true - * description: ID de la commande - * responses: - * 200: - * description: Une mesure. - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: integer - * project_id: - * type: integer - * timestamp: - * type: string - * format: date-time - * image_path: - * type: string - * temperature: - * type: number - * humidity: - * type: number - * 400: - * description: ID de projet ou de commande invalide. - * 500: - * description: Erreur serveur. - */ router.get('/measurements/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; @@ -158,38 +42,6 @@ router.get('/measurements/:projectId/:orderId', async (req, res) => { } }); -/** - * @swagger - * /measurements: - * post: - * summary: Ajouter une nouvelle mesure - * description: Ajoute une nouvelle mesure à la base de données. - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * project_id: - * type: integer - * timestamp: - * type: string - * format: date-time - * image_path: - * type: string - * temperature: - * type: number - * humidity: - * type: number - * responses: - * 201: - * description: Mesure ajoutée avec succès. - * 400: - * description: Tous les champs sont requis. - * 500: - * description: Erreur serveur. - */ router.post('/measurements', (req, res) => { const { project_id, timestamp, image_path, temperature, humidity } = req.body; if (!project_id || !timestamp || !image_path || !temperature || !humidity) { @@ -204,27 +56,6 @@ router.post('/measurements', (req, res) => { }); }); -/** - * @swagger - * /measurements/{id}: - * delete: - * summary: Supprimer une mesure par ID - * description: Supprime une mesure spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID de la mesure - * responses: - * 200: - * description: Mesure supprimée avec succès. - * 400: - * description: ID de mesure invalide. - * 500: - * description: Erreur serveur. - */ router.delete('/measurements/:id', async (req, res) => { const measurementId = req.params.id; if (!measurementId || isNaN(measurementId)) { @@ -238,33 +69,6 @@ router.delete('/measurements/:id', async (req, res) => { } }); -/** - * @swagger - * /measurements/{projectId}/{orderId}: - * delete: - * summary: Supprimer une mesure par project ID et order ID - * description: Supprime une mesure spécifique en utilisant le project ID et order ID. - * parameters: - * - in: path - * name: projectId - * schema: - * type: integer - * required: true - * description: ID du projet - * - in: path - * name: orderId - * schema: - * type: integer - * required: true - * description: ID de la commande - * responses: - * 200: - * description: Mesure supprimée avec succès. - * 400: - * description: ID de projet ou de commande invalide. - * 500: - * description: Erreur serveur. - */ router.delete('/measurements/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; diff --git a/routes/projectRoutes.js b/routes/projectRoutes.js index 2017b15..eaf48de 100644 --- a/routes/projectRoutes.js +++ b/routes/projectRoutes.js @@ -3,24 +3,6 @@ const router = express.Router(); const projectManager = require('../src/project/projectManager'); const serverError = require('../utils/serverError'); -/** - * @swagger - * /projects: - * get: - * summary: Récupérer tous les projets - * description: Récupère tous les projets disponibles. - * responses: - * 200: - * description: Une liste de projets. - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * 500: - * description: Erreur serveur. - */ router.get('/projects', async (req, res) => { try { const projects = await projectManager.getAllProjects(); @@ -30,31 +12,6 @@ router.get('/projects', async (req, res) => { } }); -/** - * @swagger - * /projects/{id}: - * get: - * summary: Récupérer un projet par ID - * description: Récupère un projet spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID du projet - * responses: - * 200: - * description: Un projet. - * content: - * application/json: - * schema: - * type: object - * 400: - * description: ID de projet invalide. - * 500: - * description: Erreur serveur. - */ router.get('/projects/:id', async (req, res) => { const projectId = req.params.id; if (!projectId || isNaN(projectId)) { @@ -68,33 +25,6 @@ router.get('/projects/:id', async (req, res) => { } }); -/** - * @swagger - * /projects/{id}/videos: - * get: - * summary: Récupérer les vidéos d'un projet par ID - * description: Récupère les vidéos associées à un projet spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID du projet - * responses: - * 200: - * description: Une liste de vidéos. - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * 400: - * description: ID de projet invalide. - * 500: - * description: Erreur serveur. - */ router.get('/projects/:id/videos', async (req, res) => { const projectId = req.params.id; if (!projectId || isNaN(projectId)) { @@ -108,33 +38,6 @@ router.get('/projects/:id/videos', async (req, res) => { } }); -/** - * @swagger - * /projects/{id}/measurements: - * get: - * summary: Récupérer les mesures d'un projet par ID - * description: Récupère les mesures associées à un projet spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID du projet - * responses: - * 200: - * description: Une liste de mesures. - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * 400: - * description: ID de projet invalide. - * 500: - * description: Erreur serveur. - */ router.get('/projects/:id/measurements', async (req, res) => { const projectId = req.params.id; if (!projectId || isNaN(projectId)) { @@ -148,31 +51,6 @@ router.get('/projects/:id/measurements', async (req, res) => { } }); -/** - * @swagger - * /projects: - * post: - * summary: Ajouter un nouveau projet - * description: Ajoute un nouveau projet à la base de données. - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * name: - * type: string - * description: - * type: string - * responses: - * 201: - * description: Projet ajouté avec succès. - * 400: - * description: Le nom et la description sont requis. - * 500: - * description: Erreur serveur. - */ router.post('/projects', async (req, res) => { const { name, description } = req.body; if (!name || !description) { diff --git a/routes/swagger_routes.js b/routes/swagger_routes.js index 5b3a37f..6e81522 100644 --- a/routes/swagger_routes.js +++ b/routes/swagger_routes.js @@ -22,4 +22,774 @@ * description: ID de projet invalide. * 500: * description: Erreur serveur. - */ \ No newline at end of file + */ +/** + * @swagger + * /projects: + * get: + * summary: Récupérer tous les projets + * description: Récupère tous les projets disponibles. + * responses: + * 200: + * description: Une liste de projets. + * content: + * application/json: + * schema: + * type: array + * items: + * type: object + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /projects/{id}: + * get: + * summary: Récupérer un projet par ID + * description: Récupère un projet spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID du projet + * responses: + * 200: + * description: Un projet. + * content: + * application/json: + * schema: + * type: object + * 400: + * description: ID de projet invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /projects/{id}/videos: + * get: + * summary: Récupérer les vidéos d'un projet par ID + * description: Récupère les vidéos associées à un projet spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID du projet + * responses: + * 200: + * description: Une liste de vidéos. + * content: + * application/json: + * schema: + * type: array + * items: + * type: object + * 400: + * description: ID de projet invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /projects/{id}/measurements: + * get: + * summary: Récupérer les mesures d'un projet par ID + * description: Récupère les mesures associées à un projet spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID du projet + * responses: + * 200: + * description: Une liste de mesures. + * content: + * application/json: + * schema: + * type: array + * items: + * type: object + * 400: + * description: ID de projet invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /projects: + * post: + * summary: Ajouter un nouveau projet + * description: Ajoute un nouveau projet à la base de données. + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * name: + * type: string + * description: + * type: string + * responses: + * 201: + * description: Projet ajouté avec succès. + * 400: + * description: Le nom et la description sont requis. + * 500: + * description: Erreur serveur. + */ + +/** + * @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. + */ + +/** + * @swagger + * /procedure/stop/: + * post: + * 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. + */ + +/** + * @swagger + * /smile: + * get: + * summary: Retrieve a smile image + * responses: + * 200: + * description: A smile image + * content: + * image/jpeg: + * schema: + * type: string + * format: binary + * 404: + * description: Image not found + */ + +/** + * @swagger + * /images/{projectId}/{orderId}: + * get: + * summary: Retrieve an image by project and order ID + * parameters: + * - in: path + * name: projectId + * required: true + * schema: + * type: string + * description: The project ID + * - in: path + * name: orderId + * required: true + * schema: + * type: string + * description: The order ID + * responses: + * 200: + * description: An image file + * content: + * application/octet-stream: + * schema: + * type: string + * format: binary + * 404: + * description: Image not found + */ +/** + * @swagger + * /images/{measurementId}: + * get: + * summary: Retrieve an image by measurement ID + * parameters: + * - in: path + * name: measurementId + * required: true + * schema: + * type: string + * description: The measurement ID + * responses: + * 200: + * description: An image file + * content: + * application/octet-stream: + * schema: + * type: string + * format: binary + * 404: + * description: Image not found + */ +/** + * @swagger + * /preview/{projectId}/{orderId}: + * get: + * summary: Retrieve a preview of an image by project and order ID + * parameters: + * - in: path + * name: projectId + * required: true + * schema: + * type: string + * description: The project ID + * - in: path + * name: orderId + * required: true + * schema: + * type: string + * description: The order ID + * responses: + * 200: + * description: A resized preview of the image + * content: + * image/jpeg: + * schema: + * type: string + * format: binary + * 404: + * description: Image not found + * 500: + * description: Internal Server Error + */ +/** + * @swagger + * /measurements: + * get: + * summary: Récupérer toutes les mesures + * description: Récupère toutes les mesures de la base de données. + * responses: + * 200: + * description: Une liste de mesures. + * content: + * application/json: + * schema: + * type: array + * items: + * type: object + * properties: + * id: + * type: integer + * project_id: + * type: integer + * timestamp: + * type: string + * format: date-time + * image_path: + * type: string + * temperature: + * type: number + * humidity: + * type: number + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /measurements/{id}: + * get: + * summary: Récupérer une mesure par ID + * description: Récupère une mesure spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID de la mesure + * responses: + * 200: + * description: Une mesure. + * content: + * application/json: + * schema: + * type: object + * properties: + * id: + * type: integer + * project_id: + * type: integer + * timestamp: + * type: string + * format: date-time + * image_path: + * type: string + * temperature: + * type: number + * humidity: + * type: number + * 400: + * description: ID de mesure invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /measurements/{projectId}/{orderId}: + * get: + * summary: Récupérer une mesure par project ID et order ID + * description: Récupère une mesure spécifique en utilisant le project ID et order ID. + * parameters: + * - in: path + * name: projectId + * schema: + * type: integer + * required: true + * description: ID du projet + * - in: path + * name: orderId + * schema: + * type: integer + * required: true + * description: ID de la commande + * responses: + * 200: + * description: Une mesure. + * content: + * application/json: + * schema: + * type: object + * properties: + * id: + * type: integer + * project_id: + * type: integer + * timestamp: + * type: string + * format: date-time + * image_path: + * type: string + * temperature: + * type: number + * humidity: + * type: number + * 400: + * description: ID de projet ou de commande invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /measurements: + * post: + * summary: Ajouter une nouvelle mesure + * description: Ajoute une nouvelle mesure à la base de données. + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * project_id: + * type: integer + * timestamp: + * type: string + * format: date-time + * image_path: + * type: string + * temperature: + * type: number + * humidity: + * type: number + * responses: + * 201: + * description: Mesure ajoutée avec succès. + * 400: + * description: Tous les champs sont requis. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /measurements/{id}: + * delete: + * summary: Supprimer une mesure par ID + * description: Supprime une mesure spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID de la mesure + * responses: + * 200: + * description: Mesure supprimée avec succès. + * 400: + * description: ID de mesure invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /measurements/{projectId}/{orderId}: + * delete: + * summary: Supprimer une mesure par project ID et order ID + * description: Supprime une mesure spécifique en utilisant le project ID et order ID. + * parameters: + * - in: path + * name: projectId + * schema: + * type: integer + * required: true + * description: ID du projet + * - in: path + * name: orderId + * schema: + * type: integer + * required: true + * description: ID de la commande + * responses: + * 200: + * description: Mesure supprimée avec succès. + * 400: + * description: ID de projet ou de commande invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /uploadmeasurement: + * post: + * summary: Télécharger une mesure avec une image + * description: Télécharge une mesure avec une image pour un projet spécifique. + * requestBody: + * content: + * multipart/form-data: + * schema: + * type: object + * properties: + * image: + * type: string + * format: binary + * description: Fichier image à télécharger + * projectId: + * type: integer + * description: ID du projet + * timestamp: + * type: string + * format: date-time + * description: Horodatage de la mesure + * temperature: + * type: number + * description: Température mesurée + * humidity: + * type: number + * description: Humidité mesurée + * responses: + * 200: + * description: Mesure téléchargée avec succès. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * path: + * type: string + * id: + * type: integer + * 400: + * description: Tous les champs sont requis. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /videos: + * get: + * summary: Récupérer toutes les vidéos + * description: Récupère toutes les vidéos de la base de données. + * responses: + * 200: + * description: Une liste de vidéos. + * content: + * application/json: + * schema: + * type: array + * items: + * type: object + * properties: + * id: + * type: integer + * project_id: + * type: integer + * measurement_ids: + * type: string + * video_path: + * type: string + * start_timestamp: + * type: string + * end_timestamp: + * type: string + * image_count: + * type: integer + * resolution: + * type: string + * duration: + * type: number + * fps: + * type: number + * status: + * type: integer + * name: + * type: string + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /videos/{id}: + * get: + * summary: Récupérer une vidéo par ID + * description: Récupère une vidéo spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID de la vidéo + * responses: + * 200: + * description: Une vidéo. + * content: + * application/json: + * schema: + * type: object + * properties: + * id: + * type: integer + * project_id: + * type: integer + * measurement_ids: + * type: string + * video_path: + * type: string + * start_timestamp: + * type: string + * end_timestamp: + * type: string + * image_count: + * type: integer + * resolution: + * type: string + * duration: + * type: number + * fps: + * type: number + * status: + * type: integer + * name: + * type: string + * 400: + * description: ID de vidéo invalide. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /videos: + * post: + * summary: Créer une nouvelle vidéo + * description: Crée une nouvelle vidéo avec les informations fournies. + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * project_id: + * type: integer + * measurement_ids: + * type: string + * name: + * type: string + * resolution: + * type: string + * duration: + * type: number + * responses: + * 200: + * description: Vidéo créée avec succès. + * content: + * application/json: + * schema: + * type: object + * properties: + * message: + * type: string + * video: + * type: object + * properties: + * project_id: + * type: integer + * measurement_ids: + * type: string + * name: + * type: string + * resolution: + * type: string + * duration: + * type: number + * 400: + * description: Tous les champs sont requis. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /videos/{id}: + * delete: + * summary: Supprimer une vidéo par ID + * description: Supprime une vidéo spécifique en utilisant son ID. + * parameters: + * - in: path + * name: id + * schema: + * type: integer + * required: true + * description: ID de la vidéo + * responses: + * 200: + * description: Vidéo supprimée avec succès. + * 400: + * description: ID de vidéo invalide. + * 404: + * description: Aucune vidéo trouvée avec cet ID. + * 500: + * description: Erreur serveur. + */ +/** + * @swagger + * /videos/file/{video_id}: + * get: + * summary: Retrieve a video by video ID + * parameters: + * - in: path + * name: video_id + * required: true + * schema: + * type: string + * description: The video ID + * responses: + * 200: + * description: A video file + * content: + * application/octet-stream: + * schema: + * type: string + * format: binary + * 404: + * description: Video not found + * 400: + * description: Video not yet produced + */ +/** + * @swagger + * /videos/render/{video_id}: + * post: + * summary: Render a video by video ID + * parameters: + * - in: path + * name: video_id + * required: true + * schema: + * type: string + * description: The video ID + * responses: + * 200: + * description: Render process started + * 404: + * description: Video not found + * 500: + * description: Server error + */ +/** + * @swagger + * /videos/reset/{video_id}: + * get: + * summary: Reset the status of a video by video ID + * parameters: + * - in: path + * name: video_id + * required: true + * schema: + * type: string + * description: The video ID + * responses: + * 200: + * description: Video reset successfully + * 404: + * description: Video not found + * 500: + * description: Server error + */ +/** + * @swagger + * /cat: + * get: + * summary: Retrieve a cat video + * responses: + * 200: + * description: A cat video + * content: + * application/octet-stream: + * schema: + * type: string + * format: binary + * 404: + * description: Video not found + */ diff --git a/routes/uploadRoutes.js b/routes/uploadRoutes.js index 25b5907..d7ec270 100644 --- a/routes/uploadRoutes.js +++ b/routes/uploadRoutes.js @@ -6,54 +6,6 @@ const serverError = require('../utils/serverError'); const upload = multer({ storage: multer.memoryStorage() }); -/** - * @swagger - * /uploadmeasurement: - * post: - * summary: Télécharger une mesure avec une image - * description: Télécharge une mesure avec une image pour un projet spécifique. - * requestBody: - * content: - * multipart/form-data: - * schema: - * type: object - * properties: - * image: - * type: string - * format: binary - * description: Fichier image à télécharger - * projectId: - * type: integer - * description: ID du projet - * timestamp: - * type: string - * format: date-time - * description: Horodatage de la mesure - * temperature: - * type: number - * description: Température mesurée - * humidity: - * type: number - * description: Humidité mesurée - * responses: - * 200: - * description: Mesure téléchargée avec succès. - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * path: - * type: string - * id: - * type: integer - * 400: - * description: Tous les champs sont requis. - * 500: - * description: Erreur serveur. - */ router.post('/uploadmeasurement', upload.single('image'), async (req, res) => { const { projectId, timestamp, temperature, humidity } = req.body; const image = req.file; diff --git a/routes/videoRoutes.js b/routes/videoRoutes.js index 56066df..18c309d 100644 --- a/routes/videoRoutes.js +++ b/routes/videoRoutes.js @@ -9,49 +9,6 @@ const videoManager = require('../src/video/videoManager'); const measureManager = require('../src/measure/measureManager'); const dbTester = require('../test/tester'); -/** - * @swagger - * /videos: - * get: - * summary: Récupérer toutes les vidéos - * description: Récupère toutes les vidéos de la base de données. - * responses: - * 200: - * description: Une liste de vidéos. - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * properties: - * id: - * type: integer - * project_id: - * type: integer - * measurement_ids: - * type: string - * video_path: - * type: string - * start_timestamp: - * type: string - * end_timestamp: - * type: string - * image_count: - * type: integer - * resolution: - * type: string - * duration: - * type: number - * fps: - * type: number - * status: - * type: integer - * name: - * type: string - * 500: - * description: Erreur serveur. - */ router.get('/videos', (req, res) => { const query = 'SELECT * FROM public.videos'; db.query(query, (err, results) => { @@ -62,56 +19,6 @@ router.get('/videos', (req, res) => { }); }); -/** - * @swagger - * /videos/{id}: - * get: - * summary: Récupérer une vidéo par ID - * description: Récupère une vidéo spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID de la vidéo - * responses: - * 200: - * description: Une vidéo. - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: integer - * project_id: - * type: integer - * measurement_ids: - * type: string - * video_path: - * type: string - * start_timestamp: - * type: string - * end_timestamp: - * type: string - * image_count: - * type: integer - * resolution: - * type: string - * duration: - * type: number - * fps: - * type: number - * status: - * type: integer - * name: - * type: string - * 400: - * description: ID de vidéo invalide. - * 500: - * description: Erreur serveur. - */ router.get('/videos/:id', (req, res) => { const videoId = req.params.id; if (!videoId || isNaN(videoId)) { @@ -126,57 +33,6 @@ router.get('/videos/:id', (req, res) => { }); }); -/** - * @swagger - * /videos: - * post: - * summary: Créer une nouvelle vidéo - * description: Crée une nouvelle vidéo avec les informations fournies. - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * project_id: - * type: integer - * measurement_ids: - * type: string - * name: - * type: string - * resolution: - * type: string - * duration: - * type: number - * responses: - * 200: - * description: Vidéo créée avec succès. - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * video: - * type: object - * properties: - * project_id: - * type: integer - * measurement_ids: - * type: string - * name: - * type: string - * resolution: - * type: string - * duration: - * type: number - * 400: - * description: Tous les champs sont requis. - * 500: - * description: Erreur serveur. - */ router.post('/videos', async (req, res) => { const { project_id, measurement_ids, name, resolution, duration } = req.body; console.log('Creating video:', req.body); @@ -196,29 +52,6 @@ router.post('/videos', async (req, res) => { }); -/** - * @swagger - * /videos/{id}: - * delete: - * summary: Supprimer une vidéo par ID - * description: Supprime une vidéo spécifique en utilisant son ID. - * parameters: - * - in: path - * name: id - * schema: - * type: integer - * required: true - * description: ID de la vidéo - * responses: - * 200: - * description: Vidéo supprimée avec succès. - * 400: - * description: ID de vidéo invalide. - * 404: - * description: Aucune vidéo trouvée avec cet ID. - * 500: - * description: Erreur serveur. - */ router.delete('/videos/:id', (req, res) => { const videoId = req.params.id; if (!videoId || isNaN(videoId)) { @@ -231,31 +64,6 @@ router.delete('/videos/:id', (req, res) => { }); }); -/** - * @swagger - * /videos/file/{video_id}: - * get: - * summary: Retrieve a video by video ID - * parameters: - * - in: path - * name: video_id - * required: true - * schema: - * type: string - * description: The video ID - * responses: - * 200: - * description: A video file - * content: - * application/octet-stream: - * schema: - * type: string - * format: binary - * 404: - * description: Video not found - * 400: - * description: Video not yet produced - */ router.get('/videos/file/:video_id', (req, res) => { const videoId = req.params.video_id; const query = 'SELECT video_file, status FROM public.videos WHERE id = $1'; @@ -326,26 +134,6 @@ function serveFallbackVideo(res) { } -/** - * @swagger - * /videos/render/{video_id}: - * post: - * summary: Render a video by video ID - * parameters: - * - in: path - * name: video_id - * required: true - * schema: - * type: string - * description: The video ID - * responses: - * 200: - * description: Render process started - * 404: - * description: Video not found - * 500: - * description: Server error - */ router.post('/videos/render/:video_id', async (req, res) => { const videoId = req.params.video_id; const query = 'SELECT measurement_ids, project_id, duration FROM public.videos WHERE id = $1'; @@ -386,26 +174,6 @@ router.post('/videos/render/:video_id', async (req, res) => { }); }); -/** - * @swagger - * /videos/reset/{video_id}: - * get: - * summary: Reset the status of a video by video ID - * parameters: - * - in: path - * name: video_id - * required: true - * schema: - * type: string - * description: The video ID - * responses: - * 200: - * description: Video reset successfully - * 404: - * description: Video not found - * 500: - * description: Server error - */ router.get('/videos/reset/:video_id', (req, res) => { const videoId = req.params.video_id; const query = 'SELECT video_file FROM public.videos WHERE id = $1'; @@ -437,22 +205,6 @@ router.get('/videos/reset/:video_id', (req, res) => { }); -/** - * @swagger - * /cat: - * get: - * summary: Retrieve a cat video - * responses: - * 200: - * description: A cat video - * content: - * application/octet-stream: - * schema: - * type: string - * format: binary - * 404: - * description: Video not found - */ router.get('/cat', (_, res) => { const videoPath = dbTester.getCatVideo(); fs.access(videoPath, fs.constants.F_OK, (err) => {