const express = require('express'); const router = express.Router(); const db = require('../db'); const serverError = require('../utils/serverError'); const videoManager = require('../src/video/videoManager'); /** * @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) => { if (err) { serverError.sendError('Erreur lors de la récupération des vidéos:', res, err); } res.json(results.rows); }); }); /** * @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)) { return res.status(400).json({ error: 'Invalid video ID' }); } const query = 'SELECT * FROM public.videos WHERE id = $1'; db.query(query, [videoId], (err, results) => { if (err) { serverError.sendError('Erreur lors de la récupération de la vidéo:', res, err); } res.json(results.rows); }); }); /** * @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', (req, res) => { const { project_id, measurement_ids, name, resolution, duration } = req.body; if (!project_id || !measurement_ids || !name || !resolution || !duration) { return res.status(400).json({ error: 'Tous les champs sont requis.' }); } console.log('Creating video with:', { project_id, measurement_ids, name, resolution, duration }); res.json({ message: 'Vidéo créée avec succès (simulation)', video: { project_id, measurement_ids, name, resolution, duration } }); }); /** * @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)) { return res.status(400).json({ error: 'Invalid video ID' }); } const query = 'DELETE FROM public.videos WHERE id = $1 RETURNING id'; db.query(query, [videoId], (err, results) => { if (err) { serverError.sendError('Erreur lors de la suppression de la vidéo:', res, err); } if (results.rowCount === 0) { return res.status(404).json({ error: 'Aucune vidéo trouvée avec cet ID.' }); } res.status(200).json({ message: 'Vidéo supprimée avec succès', id: videoId }); }); }); module.exports = router;