All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
feat(routes): Add camera, image, measurement, project, and video routes with Swagger documentation feat(services): Create storageService and videoService for file management and video processing fix(errorHandler): Enhance error handling with standardized responses and database operation wrappers
72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
// server.js
|
|
const express = require('express');
|
|
const cors = require('cors');
|
|
const app = express();
|
|
const swaggerUi = require('swagger-ui-express');
|
|
const swaggerJsdoc = require('swagger-jsdoc');
|
|
const config = require('./src/config');
|
|
const DatabaseManager = require('./src/models/database');
|
|
|
|
// Middleware pour gérer les requêtes JSON
|
|
app.use(express.json());
|
|
|
|
// Configuration CORS
|
|
app.use(cors(config.server.cors));
|
|
|
|
// Initialisation de la base de données
|
|
DatabaseManager.initialize()
|
|
.then(() => console.log('[SERVER] Base de données initialisée avec succès'))
|
|
.catch(err => console.error('[SERVER] Erreur d\'initialisation de la base de données:', err));
|
|
|
|
// Importer les routes API
|
|
const apiRoutes = require('./src/routes');
|
|
app.use('/api', apiRoutes);
|
|
|
|
// Configuration de Swagger
|
|
const swaggerOptions = {
|
|
definition: config.swagger.definition,
|
|
apis: config.swagger.apis
|
|
};
|
|
|
|
// Initialisation de swagger-jsdoc
|
|
const swaggerDocs = swaggerJsdoc(swaggerOptions);
|
|
|
|
// Route Swagger UI
|
|
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));
|
|
|
|
// Route de base pour tester le serveur
|
|
app.get('/', (req, res) => {
|
|
res.send('Bienvenue sur l\'API Timelapse!');
|
|
});
|
|
|
|
// Gestion des erreurs 404
|
|
app.use((req, res) => {
|
|
res.status(404).json({
|
|
error: {
|
|
message: 'Route non trouvée',
|
|
path: req.path,
|
|
method: req.method,
|
|
statusCode: 404
|
|
}
|
|
});
|
|
});
|
|
|
|
// Gestion des erreurs globales
|
|
app.use((err, req, res, next) => {
|
|
console.error('[SERVER] Erreur non gérée:', err);
|
|
res.status(500).json({
|
|
error: {
|
|
message: 'Erreur serveur interne',
|
|
statusCode: 500,
|
|
details: process.env.NODE_ENV === 'production' ? undefined : err.message
|
|
}
|
|
});
|
|
});
|
|
|
|
// Démarrer le serveur
|
|
const port = config.server.port;
|
|
app.listen(port, () => {
|
|
console.log(`[SERVER] Serveur démarré sur http://localhost:${port}`);
|
|
console.log(`[SERVER] Documentation Swagger disponible sur http://localhost:${port}/api-docs`);
|
|
});
|