diff --git a/routes/api.js b/routes/api.js index ae72c01..c35de15 100644 --- a/routes/api.js +++ b/routes/api.js @@ -363,18 +363,62 @@ router.get('/videos/:id', (req, res) => { /** * @swagger - * /videos: + * /createvideo: * post: - * description: Use to add a new video + * description: Use to create a new video + * requestBody: + * required: true + * content: + * application/json: + * schema: + * type: object + * properties: + * project_id: + * type: integer + * measurement_ids: + * type: string + * video_path: + * type: string + * duration: + * type: number + * resolution: + * type: string + * name: + * type: string * responses: * 201: - * description: Video added successfully + * description: Video created successfully * 500: * description: Internal server error */ -router.post('/videos', (req, res) => { - const query = 'INSERT INTO public.videos (project_id, measurement_ids, video_path, start_timestamp, end_timestamp, image_count, resolution, duration, fps, status) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING id'; - db.query(query, [req.body.project_id, req.body.measurement_ids, req.body.video_path, req.body.start_timestamp, req.body.end_timestamp, req.body.image_count, req.body.resolution, req.body.duration, req.body.fps, req.body.status], (err, results) => { +router.post('/createvideo', (req, res) => { + const query = 'INSERT INTO public.videos (project_id, measurement_ids, video_path, start_timestamp, end_timestamp, image_count, resolution, duration, fps, status, name) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING id'; + + list_ids = req.body.measurement_ids.split(','); + + image_count = list_ids.length; + + const query_first = 'SELECT timestamp FROM public.measurements WHERE id = $1'; + const query_last = 'SELECT timestamp FROM public.measurements WHERE id = $1'; + db.query(query_first, [list_ids[0]], (err, results) => { + if (err) { + console.error('Erreur lors de la récupération du timestamp de la première image:', err); + return res.status(500).json({ error: 'Erreur serveur' }); + } + start_timestamp = results.rows[0].timestamp; + }); + db.query(query_last, [list_ids[image_count - 1]], (err, results) => { + if (err) { + console.error('Erreur lors de la récupération du timestamp de la dernière image:', err); + return res.status(500).json({ error: 'Erreur serveur' }); + } + end_timestamp = results.rows[0].timestamp; + }); + + // déduire du nombre d'images le nombre d'images par seconde via la duration qui sera précisée + fps = image_count / req.body.duration; + + db.query(query, [req.body.project_id, req.body.measurement_ids, req.body.video_path, start_timestamp, end_timestamp, image_count, req.body.resolution, req.body.duration, fps, 0, req.body.name], (err, results) => { if (err) { console.error('Erreur lors de l\'ajout de la vidéo:', err); return res.status(500).json({ error: 'Erreur serveur' });