mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-04-25 04:09:12 +00:00
37 lines
1 KiB
JavaScript
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;
|
|
};
|