Files
timelapse-backend/server.js
Kerboul 4513af3aa0
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
feat(database): Implement DatabaseManager for managing database structure and initialization
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
2025-04-27 01:02:33 +02:00

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`);
});