Skip to content

Instantly share code, notes, and snippets.

@higordiego
Created November 10, 2017 12:34
Show Gist options
  • Save higordiego/fc7c2d57663d817d70e00e831ad0ce2d to your computer and use it in GitHub Desktop.
Save higordiego/fc7c2d57663d817d70e00e831ad0ce2d to your computer and use it in GitHub Desktop.
const Sequelize = require('sequelize')
const fs = require('fs')
const path = require('path')
let database = null
const loadModels = (sequelize) => {
const dir = path.join(__dirname, '../modules/models')
const models = []
fs.readdirSync(dir).forEach((file) => {
const modelDir = path.join(dir, file)
const model = sequelize.import(modelDir)
models[model.name] = model
})
Object.keys(models).forEach(function (object) {
if ('associate' in models[object]) {
models[object].associate(models)
};
})
return models
}
module.exports = (app) => {
if (!database) {
const config = app.config
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config.params
)
database = {
sequelize,
Sequelize,
models: {}
}
database.models = loadModels(sequelize)
sequelize.sync().done(() => database)
}
return database
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment