diff --git a/routes/imageRoutes.js b/routes/imageRoutes.js index 6f2e262..26b51e6 100644 --- a/routes/imageRoutes.js +++ b/routes/imageRoutes.js @@ -84,4 +84,49 @@ 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'; + db.query(query, [measurementId], (err, results) => { + if (err) { + return serverError.sendError('Error getting image:', res, err); + } + if (results.rows.length === 0) { + return res.status(404).json({ error: 'Image not found' }); + } + const imagePath = results.rows[0].path; + fs.access(imagePath, fs.constants.F_OK, (err) => { + if (err) { + console.error('Image not found:', err); + return res.status(404).json({ error: 'Image not found' }); + } + res.download(imagePath); + }); + }); +}); + module.exports = router;