const express = require('express'); const router = express.Router(); const db = require('../db'); const measureManager = require('../src/measure/measureManager'); const serverError = require('../utils/serverError'); router.get('/measurements', (req, res) => { const query = 'SELECT * FROM public.measurements'; db.query(query, (err, results) => { if (err) { serverError.sendError('Erreur lors de la récupération des mesures:', res, err, 500); } res.json(results.rows); }); }); router.get('/measurements/:id', (req, res) => { const measurementId = req.params.id; if (!measurementId || isNaN(measurementId)) { return res.status(400).json({ error: 'Invalid measurement ID' }); } const query = 'SELECT * FROM public.measurements WHERE id = $1'; db.query(query, [measurementId], (err, results) => { if (err) { serverError.sendError('Erreur lors de la récupération de la mesure:', res, err, 500); } res.json(results.rows); }); }); router.get('/measurements/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; if (!projectId || isNaN(projectId) || !orderId || isNaN(orderId)) { return res.status(400).json({ error: 'Invalid project ID or order ID' }); } try { const measurement = await measureManager.getMeasurement(projectId, orderId); res.json(measurement); } catch (error) { serverError.sendError('Error getting measurement:', res, error, 500); } }); router.post('/measurements', (req, res) => { const { project_id, timestamp, image_path, temperature, humidity } = req.body; if (!project_id || !timestamp || !image_path || !temperature || !humidity) { return res.status(400).json({ error: 'All fields are required' }); } const query = 'INSERT INTO public.measurements (project_id, timestamp, image_path, temperature, humidity) VALUES ($1, $2, $3, $4, $5) RETURNING id'; db.query(query, [project_id, timestamp, image_path, temperature, humidity], (err, results) => { if (err) { serverError.sendError('Erreur lors de l\'ajout de la mesure:', res, err, 500); } res.status(201).json({ message: 'Mesure ajoutée avec succès', id: results.rows[0].id }); }); }); router.delete('/measurements/:id', async (req, res) => { const measurementId = req.params.id; if (!measurementId || isNaN(measurementId)) { return res.status(400).json({ error: 'Invalid measurement ID' }); } try { await measureManager.deleteMeasurement(measurementId); res.status(200).json({ message: 'Measurement deleted successfully', id: measurementId }); } catch (error) { serverError.sendError('Error deleting measurement:', res, error, 500); } }); router.delete('/measurements/:projectId/:orderId', async (req, res) => { const projectId = req.params.projectId; const orderId = req.params.orderId; if (!projectId || isNaN(projectId) || !orderId || isNaN(orderId)) { return res.status(400).json({ error: 'Invalid project ID or order ID' }); } try { const measurement = await measureManager.deleteMeasurementByOrderId(projectId, orderId); res.status(200).json({ message: 'Measurement deleted successfully', id: measurement.id }); } catch (error) { serverError.sendError('Error deleting measurement:', res, error, 500); } }); module.exports = router;