node-rigorous
Version:
Rigorous Framework
85 lines (70 loc) • 2.65 kB
JavaScript
;
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();
});
}
};