const mongoose = require('mongoose'); // URL de connexion à la base de données const db = 'mongodb://database_preprod:27017/mean-fatboar-db'; // Options de connexion améliorées const options = { useNewUrlParser: true, useUnifiedTopology: true, serverSelectionTimeoutMS: 5000, // Timeout avant échec de connexion socketTimeoutMS: 45000, // Ferme les sockets après 45 secondes d'inactivité keepAlive: true, // Garde la connexion active keepAliveInitialDelay: 300000, // Ping tous les 5 minutes (300000 ms) autoIndex: true, // Construit les index automatiquement retryWrites: true, // Réessaie les opérations d'écriture échouées // autoCreate: true, // Crée automatiquement la collection si elle n'existe pas }; // Fonction initiale de connexion mongoose.connect(db, options) .then(() => { console.log("Successfully connected to the database."); // Créer une collection par défaut pour s'assurer que la base reste existante mongoose.connection.db.createCollection("app_status", function(err, res) { if (err) { console.log("Collection déjà existante, ignoré."); } else { console.log("Collection app_status créée pour maintenir la base de données active."); // Insérer un document pour s'assurer que la collection ne soit pas vide mongoose.connection.db.collection("app_status").updateOne( { name: "system_status" }, { $set: { name: "system_status", lastChecked: new Date(), status: "active" } }, { upsert: true } ); } }); }) .catch(err => { console.log("Could not connect to the database.", err); }); // Gestion des erreurs et reconnexion automatique mongoose.connection.on('error', (err) => { console.log('Mongoose connection error: ', err); }); mongoose.connection.on('disconnected', () => { console.log('Mongoose connection disconnected'); setTimeout(() => { mongoose.connect(db, options).catch(err => { console.log("Reconnection failed: ", err); }); }, 5000); // Réessayer après 5 secondes }); // Intercepter les signaux d'arrêt pour fermer proprement la connexion process.on('SIGINT', () => { mongoose.connection.close(() => { console.log('Mongoose connection closed due to app termination'); process.exit(0); }); }); module.exports = mongoose.connection; // let min = 999999999; // let max = 10000000000; // for (i = 0; i < 50000; i++) { // let code = Math.floor(Math.random() * (max - min + 1)) + min; // const ticke = new Ticket({ // code: code, // isUsed: false, // gains: "une entrée ou un dessert au choix", // date_used: new Date(), // index: 'index', // isServed: true // }); // ticke.save(); // } // const resto = new Restaurant({ // "index": 5, // "name": "FatBoar 5", // "adress": "20 Rue Houdart, 95700 Roissy-en-France, France", // "longitude": 2.515081, // "latitude": 49.002317 // }); // resto.save(); // const salt = bcrypt.genSaltSync(12); // password = bcrypt.hashSync('Pass@123', 12); // console.log('fgfg', password); // let date = new Date(1997, 1 , 12 , 20, 40); // const user = new User({ // firstname: " adrien", // lastname: "xxxxxxx", // email: "adrien@hotmail.fr", // role: 'admin', // birthday: date, // phonenumber: '0680705876', // isActive: true, // password: password // }); // user.save();