feat(database): Implement DatabaseManager for managing database structure and initialization
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
feat(routes): Add camera, image, measurement, project, and video routes with Swagger documentation feat(services): Create storageService and videoService for file management and video processing fix(errorHandler): Enhance error handling with standardized responses and database operation wrappers
This commit is contained in:
169
src/routes/videoRoutes.js
Normal file
169
src/routes/videoRoutes.js
Normal file
@@ -0,0 +1,169 @@
|
||||
// src/routes/videoRoutes.js
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const VideoController = require('../controllers/videoController');
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos:
|
||||
* get:
|
||||
* summary: Récupère toutes les vidéos
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Liste de toutes les vidéos
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.get('/videos', VideoController.getAllVideos);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos/{id}:
|
||||
* get:
|
||||
* summary: Récupère une vidéo par ID
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: ID de la vidéo
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Détails de la vidéo
|
||||
* 400:
|
||||
* description: ID de vidéo invalide
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.get('/videos/:id', VideoController.getVideoById);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos:
|
||||
* post:
|
||||
* summary: Crée une nouvelle vidéo
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* project_id:
|
||||
* type: integer
|
||||
* measurement_ids:
|
||||
* type: string
|
||||
* description: JSON array of measurement IDs
|
||||
* name:
|
||||
* type: string
|
||||
* resolution:
|
||||
* type: string
|
||||
* example: "1920x1080"
|
||||
* duration:
|
||||
* type: integer
|
||||
* description: Duration in seconds
|
||||
* required:
|
||||
* - project_id
|
||||
* - measurement_ids
|
||||
* - name
|
||||
* - resolution
|
||||
* - duration
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Vidéo créée avec succès
|
||||
* 400:
|
||||
* description: Paramètres invalides
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.post('/videos', VideoController.createVideo);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos/{id}:
|
||||
* delete:
|
||||
* summary: Supprime une vidéo
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* 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: Vidéo non trouvée
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.delete('/videos/:id', VideoController.deleteVideo);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos/file/{video_id}:
|
||||
* get:
|
||||
* summary: Récupère le fichier vidéo
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: video_id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: ID de la vidéo
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Fichier vidéo (stream)
|
||||
* 206:
|
||||
* description: Fichier vidéo partiel (range request)
|
||||
* 400:
|
||||
* description: Vidéo pas encore produite
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.get('/videos/file/:video_id', VideoController.getVideoFile);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /videos/progress/{video_id}:
|
||||
* get:
|
||||
* summary: Récupère la progression du rendu d'une vidéo
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: video_id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: ID de la vidéo
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Informations de progression
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* progress:
|
||||
* type: number
|
||||
* elapsed:
|
||||
* type: number
|
||||
* eta:
|
||||
* type: number
|
||||
* status:
|
||||
* type: string
|
||||
* 404:
|
||||
* description: Vidéo non trouvée
|
||||
* 500:
|
||||
* description: Erreur serveur
|
||||
*/
|
||||
router.get('/videos/progress/:video_id', VideoController.getVideoProgress);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user