v1/Server/models/index.js
2019-11-19 23:03:04 -05:00

37 lines
1 KiB
JavaScript

const log = new (require('../logger'))('models/index');
const glob = require('glob');
const path = require('path');
const util = require('../util/model-methods');
module.exports = sql => {
const models = {};
const modelFiles = glob.sync('./models/**/!(index).js');
log.debug('found models', modelFiles);
modelFiles.forEach(v => {
let name = path.basename(v).replace('.js', '');
if (v === './models/index.js') {
log.debug('index.js hit, skipped');
return;
}
try {
log.debug('importing..', v.replace('models/', ''));
let model = sql.import(v.replace('models/', ''));
models[name] = model;
} catch (err) {
log.fatal('error importing model ' + v, err);
process.exit(-1);
}
});
Object.keys(models).forEach(v => {
if (models[v].hasOwnProperty('__associations')) {
models[v].__associations(models);
}
if (models[v].hasOwnProperty('__instanceMethods')) {
models[v].__instanceMethods(models[v]);
}
});
return models;
};