Améliorer la gestion des erreurs en ajoutant un code d'état HTTP aux réponses d'erreur dans plusieurs routes et en modifiant la fonction sendError pour accepter un code d'état personnalisé.

This commit is contained in:
2025-03-13 09:32:02 +01:00
parent 62e8aee6bd
commit dab93cfdf9
8 changed files with 31 additions and 26 deletions

View File

@@ -31,7 +31,7 @@ router.post('/procedure/start/', async (req, res) => {
const result = startProcedure(projectId, interval);
res.status(200).json(result);
} catch (err) {
serverError.sendError('Erreur lors du démarrage de la procédure de capture:', res, err);
serverError.sendError('Erreur lors du démarrage de la procédure de capture:', res, err, 500);
}
});
@@ -101,7 +101,7 @@ router.post('/procedure/stop/', async (req, res) => {
const result = stopProcedure();
res.status(200).json(result);
} catch (err) {
serverError.sendError('Erreur lors de l\'arrêt de la procédure de capture:', res, err);
serverError.sendError('Erreur lors de l\'arrêt de la procédure de capture:', res, err, 500);
}
});

View File

@@ -24,7 +24,7 @@ router.get('/images/:projectId/:orderId', (req, res) => {
const query = 'SELECT path FROM public.measurements WHERE project_id = $1 AND order_id = $2';
db.query(query, [projectId, orderId], (err, results) => {
if (err) {
return serverError.sendError('Error getting image:', res, err);
return serverError.sendError('Error getting image:', res, err, 500);
}
if (results.rows.length === 0) {
return res.status(404).json({ error: 'Image not found' });
@@ -46,7 +46,7 @@ router.get('/images/:measurementId', (req, res) => {
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);
return serverError.sendError('Error getting image:', res, err, 500);
}
if (results.rows.length === 0) {
return res.status(404).json({ error: 'Image not found' });

View File

@@ -8,7 +8,7 @@ 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);
serverError.sendError('Erreur lors de la récupération des mesures:', res, err, 500);
}
res.json(results.rows);
});
@@ -22,7 +22,7 @@ router.get('/measurements/:id', (req, res) => {
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);
serverError.sendError('Erreur lors de la récupération de la mesure:', res, err, 500);
}
res.json(results.rows);
});
@@ -38,7 +38,7 @@ router.get('/measurements/:projectId/:orderId', async (req, res) => {
const measurement = await measureManager.getMeasurement(projectId, orderId);
res.json(measurement);
} catch (error) {
serverError.sendError('Error getting measurement:', res, error);
serverError.sendError('Error getting measurement:', res, error, 500);
}
});
@@ -50,7 +50,7 @@ router.post('/measurements', (req, res) => {
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);
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 });
});
@@ -65,7 +65,7 @@ router.delete('/measurements/:id', async (req, res) => {
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);
serverError.sendError('Error deleting measurement:', res, error, 500);
}
});
@@ -79,7 +79,7 @@ router.delete('/measurements/:projectId/:orderId', async (req, res) => {
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);
serverError.sendError('Error deleting measurement:', res, error, 500);
}
});

View File

@@ -8,7 +8,7 @@ router.get('/projects', async (req, res) => {
const projects = await projectManager.getAllProjects();
res.json(projects);
} catch (error) {
serverError.sendError('Error getting all projects:', res, error);
serverError.sendError('Error getting all projects:', res, error, 500);
}
});
@@ -21,7 +21,7 @@ router.get('/projects/:id', async (req, res) => {
const project = await projectManager.getProjectById(projectId);
res.json(project);
} catch (error) {
serverError.sendError('Error getting project by ID:', res, error);
serverError.sendError('Error getting project by ID:', res, error, 500);
}
});
@@ -34,7 +34,7 @@ router.get('/projects/:id/videos', async (req, res) => {
const videos = await projectManager.getVideosByProjectId(projectId);
res.json(videos);
} catch (error) {
serverError.sendError('Error getting videos by project ID:', res, error);
serverError.sendError('Error getting videos by project ID:', res, error, 500);
}
});
@@ -47,7 +47,7 @@ router.get('/projects/:id/measurements', async (req, res) => {
const measurements = await projectManager.getMeasurementsByProjectId(projectId);
res.json(measurements);
} catch (error) {
serverError.sendError('Error getting measurements by project ID:', res, error);
serverError.sendError('Error getting measurements by project ID:', res, error, 500);
}
});
@@ -61,7 +61,7 @@ router.post('/projects', async (req, res) => {
projectManager.createProjectDirectory(project.id);
res.status(201).json({ message: 'Project added successfully', id: project.id });
} catch (error) {
serverError.sendError('Error creating project:', res, error);
serverError.sendError('Error creating project:', res, error, 500);
}
});
@@ -75,7 +75,7 @@ router.delete('/projects/:id', async (req, res) => {
projectManager.deleteProjectById(projectId);
res.status(200).json({ message: 'Project deleted successfully', id: projectId });
} catch (error) {
serverError.sendError('Error deleting project:', res, error);
serverError.sendError('Error deleting project:', res, error, 500);
}
});

View File

@@ -28,8 +28,7 @@ router.post('/uploadmeasurement', upload.single('image'), async (req, res) => {
const measurement = await measureManager.addMeasureToProject(projectId, timestamp, imagePath, temperature, humidity, nextOrderId);
res.json({ message: 'Measurement uploaded successfully', path: imagePath, id: measurement.id });
} catch (error) {
console.error('Error uploading measurement:', error);
serverError.sendError('Error uploading measurement:', res, error);
serverError.sendError('Error uploading measurement:', res, error, 500);
}
});

View File

@@ -13,7 +13,7 @@ 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);
serverError.sendError('Erreur lors de la récupération des vidéos:', res, err, 500);
}
res.json(results.rows);
});
@@ -27,7 +27,7 @@ router.get('/videos/:id', (req, res) => {
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);
serverError.sendError('Erreur lors de la récupération de la vidéo:', res, err, 500);
}
res.json(results.rows);
});
@@ -140,7 +140,7 @@ router.post('/videos/render/:video_id', async (req, res) => {
db.query(query, [videoId], async (err, results) => {
if (err) {
return serverError.sendError('Error getting video:', res, err);
return serverError.sendError('Error getting video:', res, err, 500);
}
if (results.rows.length === 0) {
return res.status(404).json({ error: 'Video not found' });
@@ -180,7 +180,7 @@ router.get('/videos/reset/:video_id', (req, res) => {
db.query(query, [videoId], (err, results) => {
if (err) {
return serverError.sendError('Error getting video:', res, err);
return serverError.sendError('Error getting video:', res, err, 500);
}
if (results.rows.length === 0) {
return res.status(404).json({ error: 'Video not found' });
@@ -196,7 +196,7 @@ router.get('/videos/reset/:video_id', (req, res) => {
const updateQuery = 'UPDATE public.videos SET status = 0, video_file = NULL WHERE id = $1';
db.query(updateQuery, [videoId], (err) => {
if (err) {
return serverError.sendError('Error resetting video status:', res, err);
return serverError.sendError('Error resetting video status:', res, err, 500);
}
res.json({ message: 'Video reset successfully' });
});

View File

@@ -76,7 +76,7 @@ async function createVideoWithList(projectId, pathList, duration, videoId) {
return outputVideo;
} catch (error) {
console.error('Error creating video:', error);
serverError.sendError(error);
serverError.sendError('Error creating video', err=error);
} finally {
// Supprimer le fichier temporaire
if (fs.existsSync(tempFile)) {

View File

@@ -1,6 +1,12 @@
function sendError(comment, res, err) {
function sendError(comment, res = { status: () => ({ json: () => {} }) }, err = null, code = 500) {
console.error(comment, err);
res.status(500).send('Server error');
res.status(code).json({
error: {
message: comment,
code: code,
error: err
}
});
}
module.exports = {