var mongoose = require('mongoose').set('debug', false)

mongoose.Promise = global.Promise;

mongoose.level = "";


mongoose.plugin(schema => {
  schema.options.usePushEach = true
});

mongoose.set('debug', false);

const options = {
  // user: process.env.UDB,
  // pass: process.env.PDB,
  // useMongoClient: true,
  // useMongoClient: false,
  useNewUrlParser: true,
  // useFindAndModify: true,
  useFindAndModify: false,
  // useCreateIndex: true,
  useUnifiedTopology: true,

  promiseLibrary: require('bluebird'),

  // autoIndex: false, // Don't build indexes
  // reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect
  // reconnectInterval: 500, // Reconnect every 500ms
  // poolSize: 10, // Maintain up to 10 socket connections
  // // If not connected, return errors immediately rather than waiting for reconnect
  // bufferMaxEntries: 0,
  // connectTimeoutMS: 10000, // Give up initial connection after 10 seconds
  // socketTimeoutMS: 45000, // Close sockets after 45 seconds of inactivity
  // family: 4 // Use IPv4, skip trying IPv6

  // keepAlive: true,                // keepAlive is true by default since mongoose 5.2.0
  // keepAliveInitialDelay: 300000   // keepAliveInitialDelay is the number of milliseconds to wait before initiating keepAlive on the socket.
};


const db = mongoose.connection;


// mongoose.connect(process.env.MONGODB_URI + '?authSource=admin', { options })
// console.log('  -> PASSAGGIO PARAMETRI MONGOOSE')
console.log('Node Version ' + process.version);
console.log('Mongoose Version ' + mongoose.version);
console.log('Connessione a ' + process.env.MONGODB_URI + ' in corso...');
mongoose.connect(process.env.MONGODB_URI, options);

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
  console.log('*** CONNESSIONE EFFETTUATA ! ' + process.env.MONGODB_URI + ' db: ' + process.env.DATABASE)

});

module.exports = {mongoose};
