UNPKG

node-rigorous

Version:
85 lines (70 loc) 2.65 kB
"use strict"; var _fs = _interopRequireDefault(require("fs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Autoriser le require dynamique * Impact -> https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md */ /* eslint global-require: 0 */ // --> OFF /* eslint import/no-dynamic-require: 0 */ // --> OFF var mongoose = require('mongoose'); function isModelDirectory(directory) { return directory.indexOf('.') === -1 && directory.indexOf('__') === -1; } function isModelFile(file) { return file === 'index.js'; } function getModelFileName(file) { return file.substr(0, file.indexOf('.')); } /** * Connexion to mongodb via Mongoose Driver * Note - Options possible: http://mongoosejs.com/docs/connections.html useMongoClient: true, // this param is no longer needed in 5.X autoIndex: false, // Don't build indexes reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect reconnectInterval: 1000, // Reconnect every 500ms poolSize: 10, // Maintain up to 10 socket connections // If not connected, return errors immediately rather than waiting for reconnect bufferMaxEntries: 0 */ module.exports = { connectMongoose: function connectMongoose(urlMongo) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { /* autoIndex: true, autoCreate: true, */ useCreateIndex: true, reconnectTries: Number.MAX_VALUE, // Never stop trying to reconnect reconnectInterval: 1000, useNewUrlParser: true, autoIndex: true // Pour cyp pour éviter cyclic dependency ?? impact -> https://stackoverflow.com/questions/14342708/mongoose-indexing-in-production-code }; mongoose.connect(urlMongo, options); }, loadModels: function loadModels(pathModel) { return new Promise(function (resolve, reject) { _fs["default"].readdirSync(pathModel).forEach(function (directory) { if (isModelDirectory(directory)) { _fs["default"].readdirSync("".concat(pathModel, "/").concat(directory)).forEach(function (file) { if (isModelFile(file)) { var name = getModelFileName(file); try { require("".concat(pathModel, "/").concat(directory, "/").concat(name)); } catch (err) { console.log("Model ".concat(directory, " failed to load: ").concat(err.toString())); return reject(err); } } return null; }); } return null; }); return resolve(); }); } };