feat(database): Implement DatabaseManager for managing database structure and initialization
All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
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
This commit is contained in:
80
server.js
80
server.js
@@ -1,47 +1,31 @@
|
||||
// server.js
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const cors = require('cors');
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
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());
|
||||
|
||||
// Cors accès à tout
|
||||
app.use(cors({
|
||||
origin: ['http://127.0.0.1:5500', 'http://localhost:5500', 'http://localhost:3000'],
|
||||
methods: ['GET', 'POST', 'PUT', 'DELETE'],
|
||||
allowedHeaders: ['Content-Type'],
|
||||
credentials: true,
|
||||
}));
|
||||
// Configuration CORS
|
||||
app.use(cors(config.server.cors));
|
||||
|
||||
// Importer les routes
|
||||
const apiRoutes = require('./api');
|
||||
// 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);
|
||||
|
||||
// Swagger dependencies
|
||||
const swaggerUi = require('swagger-ui-express');
|
||||
const swaggerJsdoc = require('swagger-jsdoc');
|
||||
|
||||
// Configuration de Swagger
|
||||
const swaggerOptions = {
|
||||
definition: {
|
||||
openapi: '3.0.0',
|
||||
info: {
|
||||
title: 'API Documentation',
|
||||
version: '1.0.0',
|
||||
description: 'Documentation de l\'API avec Swagger',
|
||||
},
|
||||
servers: [
|
||||
{
|
||||
url: 'https://timelapse.kerboul.me/api',
|
||||
},
|
||||
{
|
||||
url: 'http://localhost:3000/api',
|
||||
}
|
||||
],
|
||||
},
|
||||
apis: ['./routes/*.js'], // Prend en compte tous les fichiers de routes pour générer la documentation
|
||||
definition: config.swagger.definition,
|
||||
apis: config.swagger.apis
|
||||
};
|
||||
|
||||
// Initialisation de swagger-jsdoc
|
||||
@@ -52,14 +36,36 @@ app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));
|
||||
|
||||
// Route de base pour tester le serveur
|
||||
app.get('/', (req, res) => {
|
||||
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:5500');
|
||||
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
|
||||
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
||||
res.send('Bienvenue sur mon API Node.js!');
|
||||
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] Swagger documentation disponible sur http://localhost:${port}/api-docs`);
|
||||
console.log(`[SERVER] Documentation Swagger disponible sur http://localhost:${port}/api-docs`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user