refont back express

This commit is contained in:
jleroy
2025-03-11 10:29:18 +01:00
parent f944b99172
commit 4e41294eee
18 changed files with 507 additions and 9 deletions

82
backend/server.js Normal file
View File

@@ -0,0 +1,82 @@
import express from 'express';
import cors from 'cors';
import apiRoutes from './routes/apiRoutes.js';
import corsOptions from './config/cors.js'
import {apiKeyMiddleware} from './middleware/apiKeyMiddleware.js';
import dotenv from 'dotenv';
import cookieParser from 'cookie-parser';
import pool from "./config/db.js";
import * as path from "node:path";
import { fileURLToPath } from 'url';
const envFile = `.env`;
dotenv.config({ path: path.resolve(process.cwd(), envFile), override: true });
const app = express();
// Utiliser CORS
app.use(cors(corsOptions));
// Utilisation des cookies
app.use(cookieParser());
// Middleware pour parser les corps de requêtes JSON
app.use(express.json());
// Utilisation des fichiers/images
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
// Middleware pour vérifier la clé API (Authorization)
app.use('/', apiKeyMiddleware);
// Utiliser les routes API
app.use('/', apiRoutes);
// Middleware pour les routes non trouvées
app.use((req, res) => {
res.status(404).json({
message: 'Forbidden: Invalid Request',
status: false
});
});
// Test de conenxion à la base de donnée
const testDatabaseConnection = async () => {
let conn;
try {
conn = await pool.getConnection();
console.log('✅ Connexion à la base de données réussie ! 🎉');
} catch (err) {
console.error('❌ Erreur de connexion à la base de données :', err.message);
throw new Error('⛔ Impossible de se connecter à la base de données.');
} finally {
if (conn) await conn.end();
}
};
// Lancer le serveur
const startServer = async () => {
while (true) {
try {
console.log(`🚀 Lancement de l'API en cours... 🔧`);
await testDatabaseConnection();
app.listen(process.env.PORT, () => {
console.log(`📢 NODE_ENV = ${process.env.NODE_ENV} 🌍`);
console.log(`📢 Chargement du fichier : ${envFile} 📄`);
console.log(`🚀 API démarrée sur le port ${process.env.PORT} 🎯`);
console.log(`🌍 Allowed Origin : ${process.env.ALLOWED_ORIGIN} 🔗`);
console.log(`✅ L'API est lancée et prête à l'emploi ! 🎉`);
});
break;
} catch (err) {
console.error('❌ Le serveur na pas pu démarrer :', err.message);
console.log('⏳ Nouvelle tentative de démarrage dans 5 secondes... 🔄');
await new Promise((resolve) => setTimeout(resolve, 5000));
}
}
};
startServer();