| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- 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();
|