Supprimer la documentation Swagger obsolète dans plusieurs fichiers de routes
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -23,3 +23,773 @@
|
||||
* 500:
|
||||
* 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
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user