87 lines
3.4 KiB
JavaScript
87 lines
3.4 KiB
JavaScript
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 {
|
|
const measurement = 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;
|