Advertisement
Guest User

index.js

a guest
Mar 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fs = require('fs');
  2. const path = require('path');
  3. const Sequelize = require('sequelize');
  4. const basename = path.basename(module.filename);
  5. const env = process.env.NODE_ENV || 'development';
  6. const config = require(`${__dirname}/../config/config`).database[env];
  7. const db = {};
  8.  
  9. let sequelize;
  10. if (config.use_env_variable) {
  11.     sequelize = new Sequelize(process.env[config.use_env_variable]);
  12. } else {
  13.     sequelize = new Sequelize(
  14.         config.database, config.username, config.password, config
  15.  
  16.     );
  17.  
  18. }
  19.  
  20. fs
  21.     .readdirSync(__dirname)
  22.     .filter(file =>
  23.         (file.indexOf('.') !== 0) &&
  24.         (file !== basename) &&
  25.         (file.slice(-3) === '.js'))
  26.     .forEach(file => {
  27.  
  28.         const model = sequelize.import(path.join(__dirname, file));
  29.         db[model.name] = model;
  30.     });
  31.  
  32. Object.keys(db).forEach(modelName => {
  33.     if (db[modelName].associate) {
  34.         db[modelName].associate(db);
  35.     }
  36. });
  37.  
  38. const models = Object.keys(db);
  39.  
  40. async function create(models) {
  41.     console.log('Initializing...');
  42.     await sequelize
  43.         .authenticate()
  44.         .then(function(err) {
  45.             console.log('\x1b[32m%s\x1b[0m','Connection has been established successfully.');
  46.         })
  47.         .catch(function (err) {
  48.             console.error('Unable to connect to the database!');
  49.             process.exit(1);
  50.         });
  51.     for (let i = 0; i < models.length; i++) {
  52.         const modelName = models[i];
  53.         try {
  54.             await db[modelName].sync();
  55.             models.splice(i, 1);
  56.             i--;
  57.             //console.log('success for '+ modelName);
  58.         } catch (err) {
  59.             //console.log('failed to initialize '+ modelName);
  60.         }
  61.     }
  62.     if (models.length > 0) create(models.slice());
  63. }
  64.  
  65. create(models.slice());
  66.  
  67. db.sequelize = sequelize;
  68. db.Sequelize = Sequelize;
  69.  
  70. module.exports = db;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement