Réorganisation des routes API et ajout de la gestion des téléchargements d'images
This commit is contained in:
130
routes/uploadRoutes.js
Normal file
130
routes/uploadRoutes.js
Normal file
@@ -0,0 +1,130 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const multer = require('multer');
|
||||
const measureManager = require('../src/measure/measureManager');
|
||||
const serverError = require('../utils/serverError');
|
||||
|
||||
const upload = multer({ storage: multer.memoryStorage() });
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /upload:
|
||||
* post:
|
||||
* summary: Télécharger une image
|
||||
* description: Télécharge une image pour un projet et un ordre spécifiques.
|
||||
* consumes:
|
||||
* - multipart/form-data
|
||||
* parameters:
|
||||
* - in: formData
|
||||
* name: image
|
||||
* type: file
|
||||
* description: Fichier image à télécharger
|
||||
* - in: formData
|
||||
* name: projectId
|
||||
* type: integer
|
||||
* description: ID du projet
|
||||
* - in: formData
|
||||
* name: orderId
|
||||
* type: integer
|
||||
* description: ID de la commande
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Image téléchargée avec succès.
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* message:
|
||||
* type: string
|
||||
* path:
|
||||
* type: string
|
||||
* 400:
|
||||
* description: Tous les champs sont requis.
|
||||
* 500:
|
||||
* description: Erreur serveur.
|
||||
*/
|
||||
router.post('/upload', upload.single('image'), async (req, res) => {
|
||||
const { projectId, orderId } = req.body;
|
||||
const image = req.file;
|
||||
|
||||
if (!image || !projectId || !orderId) {
|
||||
return res.status(400).json({ error: 'All fields are required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const imagePath = await measureManager.uploadMeasureImage(image, projectId, orderId);
|
||||
res.json({ message: 'Image uploaded successfully', path: imagePath });
|
||||
} catch (error) {
|
||||
serverError.sendError('Error uploading image:', res, error);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /uploadmeasurement:
|
||||
* post:
|
||||
* summary: Télécharger une mesure avec une image
|
||||
* description: Télécharge une mesure avec une image pour un projet spécifique.
|
||||
* consumes:
|
||||
* - multipart/form-data
|
||||
* parameters:
|
||||
* - in: formData
|
||||
* name: image
|
||||
* type: file
|
||||
* description: Fichier image à télécharger
|
||||
* - in: formData
|
||||
* name: projectId
|
||||
* type: integer
|
||||
* description: ID du projet
|
||||
* - in: formData
|
||||
* name: timestamp
|
||||
* type: string
|
||||
* format: date-time
|
||||
* description: Horodatage de la mesure
|
||||
* - in: formData
|
||||
* name: temperature
|
||||
* type: number
|
||||
* description: Température mesurée
|
||||
* - in: formData
|
||||
* name: humidity
|
||||
* type: number
|
||||
* description: Humidité mesurée
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Mesure téléchargée avec succès.
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* message:
|
||||
* type: string
|
||||
* path:
|
||||
* type: string
|
||||
* id:
|
||||
* type: integer
|
||||
* 400:
|
||||
* description: Tous les champs sont requis.
|
||||
* 500:
|
||||
* description: Erreur serveur.
|
||||
*/
|
||||
router.post('/uploadmeasurement', upload.single('image'), async (req, res) => {
|
||||
const { projectId, timestamp, temperature, humidity } = req.body;
|
||||
const image = req.file;
|
||||
|
||||
if (!image || !projectId || !timestamp || !temperature || !humidity) {
|
||||
return res.status(400).json({ error: 'All fields are required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const nextOrderId = await measureManager.getNextOrderId(projectId);
|
||||
const imagePath = await measureManager.uploadMeasureImage(image, projectId, nextOrderId);
|
||||
const measurement = await measureManager.addMeasureToProject(projectId, timestamp, imagePath, temperature, humidity, nextOrderId);
|
||||
res.json({ message: 'Measurement uploaded successfully', path: imagePath, id: measurement.id });
|
||||
} catch (error) {
|
||||
serverError.sendError('Error uploading measurement:', res, error);
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user