Supprimer la documentation Swagger obsolète dans plusieurs fichiers de routes

This commit is contained in:
2025-03-13 09:06:38 +01:00
parent 217f0b4fd3
commit 9d9868e26b
7 changed files with 773 additions and 767 deletions

View File

@@ -12,39 +12,7 @@ const minInterval = 3; // Minutes
var captureProjectID = -1; var captureProjectID = -1;
var captureInterval = 0; // Minutes 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) => { router.post('/procedure/start/', async (req, res) => {
const { projectId, interval } = req.body; const { projectId, interval } = req.body;
try { 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.' }; 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) => { router.post('/procedure/stop/', async (req, res) => {
try { try {
const result = stopProcedure(); const result = stopProcedure();

View File

@@ -7,22 +7,6 @@ const dbTester = require('../test/tester');
const db = require('../db'); const db = require('../db');
const serverError = require('../utils/serverError'); 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) => { router.get('/smile', (req, res) => {
const imagePath = dbTester.getSmileImage(); const imagePath = dbTester.getSmileImage();
fs.access(imagePath, fs.constants.F_OK, (err) => { 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) => { router.get('/images/:projectId/:orderId', (req, res) => {
const projectId = req.params.projectId; const projectId = req.params.projectId;
const orderId = req.params.orderId; 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) => { router.get('/images/:measurementId', (req, res) => {
const measurementId = req.params.measurementId; const measurementId = req.params.measurementId;
const query = 'SELECT path FROM public.measurements WHERE id = $1'; 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) => { router.get('/preview/:projectId/:orderId', async (req, res) => {
const projectId = req.params.projectId; const projectId = req.params.projectId;
const orderId = req.params.orderId; const orderId = req.params.orderId;

View File

@@ -4,38 +4,6 @@ const db = require('../db');
const measureManager = require('../src/measure/measureManager'); const measureManager = require('../src/measure/measureManager');
const serverError = require('../utils/serverError'); 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) => { router.get('/measurements', (req, res) => {
const query = 'SELECT * FROM public.measurements'; const query = 'SELECT * FROM public.measurements';
db.query(query, (err, results) => { 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) => { router.get('/measurements/:id', (req, res) => {
const measurementId = req.params.id; const measurementId = req.params.id;
if (!measurementId || isNaN(measurementId)) { 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) => { router.get('/measurements/:projectId/:orderId', async (req, res) => {
const projectId = req.params.projectId; const projectId = req.params.projectId;
const orderId = req.params.orderId; 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) => { router.post('/measurements', (req, res) => {
const { project_id, timestamp, image_path, temperature, humidity } = req.body; const { project_id, timestamp, image_path, temperature, humidity } = req.body;
if (!project_id || !timestamp || !image_path || !temperature || !humidity) { 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) => { router.delete('/measurements/:id', async (req, res) => {
const measurementId = req.params.id; const measurementId = req.params.id;
if (!measurementId || isNaN(measurementId)) { 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) => { router.delete('/measurements/:projectId/:orderId', async (req, res) => {
const projectId = req.params.projectId; const projectId = req.params.projectId;
const orderId = req.params.orderId; const orderId = req.params.orderId;

View File

@@ -3,24 +3,6 @@ const router = express.Router();
const projectManager = require('../src/project/projectManager'); const projectManager = require('../src/project/projectManager');
const serverError = require('../utils/serverError'); 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) => { router.get('/projects', async (req, res) => {
try { try {
const projects = await projectManager.getAllProjects(); 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) => { router.get('/projects/:id', async (req, res) => {
const projectId = req.params.id; const projectId = req.params.id;
if (!projectId || isNaN(projectId)) { 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) => { router.get('/projects/:id/videos', async (req, res) => {
const projectId = req.params.id; const projectId = req.params.id;
if (!projectId || isNaN(projectId)) { 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) => { router.get('/projects/:id/measurements', async (req, res) => {
const projectId = req.params.id; const projectId = req.params.id;
if (!projectId || isNaN(projectId)) { 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) => { router.post('/projects', async (req, res) => {
const { name, description } = req.body; const { name, description } = req.body;
if (!name || !description) { if (!name || !description) {

View File

@@ -22,4 +22,774 @@
* description: ID de projet invalide. * description: ID de projet invalide.
* 500: * 500:
* description: Erreur serveur. * description: Erreur serveur.
*/ */
/**
* @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
*/

View File

@@ -6,54 +6,6 @@ const serverError = require('../utils/serverError');
const upload = multer({ storage: multer.memoryStorage() }); 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) => { router.post('/uploadmeasurement', upload.single('image'), async (req, res) => {
const { projectId, timestamp, temperature, humidity } = req.body; const { projectId, timestamp, temperature, humidity } = req.body;
const image = req.file; const image = req.file;

View File

@@ -9,49 +9,6 @@ const videoManager = require('../src/video/videoManager');
const measureManager = require('../src/measure/measureManager'); const measureManager = require('../src/measure/measureManager');
const dbTester = require('../test/tester'); 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) => { router.get('/videos', (req, res) => {
const query = 'SELECT * FROM public.videos'; const query = 'SELECT * FROM public.videos';
db.query(query, (err, results) => { 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) => { router.get('/videos/:id', (req, res) => {
const videoId = req.params.id; const videoId = req.params.id;
if (!videoId || isNaN(videoId)) { 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) => { router.post('/videos', async (req, res) => {
const { project_id, measurement_ids, name, resolution, duration } = req.body; const { project_id, measurement_ids, name, resolution, duration } = req.body;
console.log('Creating video:', 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) => { router.delete('/videos/:id', (req, res) => {
const videoId = req.params.id; const videoId = req.params.id;
if (!videoId || isNaN(videoId)) { 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) => { router.get('/videos/file/:video_id', (req, res) => {
const videoId = req.params.video_id; const videoId = req.params.video_id;
const query = 'SELECT video_file, status FROM public.videos WHERE id = $1'; 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) => { router.post('/videos/render/:video_id', async (req, res) => {
const videoId = req.params.video_id; const videoId = req.params.video_id;
const query = 'SELECT measurement_ids, project_id, duration FROM public.videos WHERE id = $1'; 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) => { router.get('/videos/reset/:video_id', (req, res) => {
const videoId = req.params.video_id; const videoId = req.params.video_id;
const query = 'SELECT video_file FROM public.videos WHERE id = $1'; 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) => { router.get('/cat', (_, res) => {
const videoPath = dbTester.getCatVideo(); const videoPath = dbTester.getCatVideo();
fs.access(videoPath, fs.constants.F_OK, (err) => { fs.access(videoPath, fs.constants.F_OK, (err) => {