Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('fs');
- const path = require('path');
- const Sequelize = require('sequelize');
- const { db: dbConfig } = require('config');
- const basename = path.basename(__filename);
- const { Op } = Sequelize;
- const sequelize = new Sequelize({
- host: dbConfig.host,
- port: dbConfig.port,
- username: dbConfig.username,
- password: dbConfig.password,
- database: dbConfig.database,
- dialect: 'mysql',
- //pool: {
- // max: dbConfig.pool.max,
- // min: dbConfig.pool.min,
- // idle: dbConfig.pool.idle,
- // acquire: dbConfig.pool.acquire,
- // evict: dbConfig.pool.evict
- //},
- benchmark: dbConfig.benchmark,
- logging: (dbConfig.logging && dbConfig.benchmark)
- ? (log, bench) => console.log(`## Sqlz ( ${bench} ms ):`, log) : dbConfig.logging
- ? (log) => console.log('## Sqlz:', log) : false,
- define: {
- underscored: false,
- timestamps: false,
- paranoid: false,
- freezeTableName: false,
- charset: 'utf8',
- collate: 'utf8_general_ci'
- },
- omitNull: false,
- typeValidation: true,
- });
- const fileHasDot = (file) => file.indexOf('.') !== 0;
- const isNotBasefile = (file) => file !== basename;
- const isJsFile = (file) => file.slice(-3) === '.js';
- module.exports = async function init() {
- const models = {};
- fs.readdirSync(__dirname)
- .filter(fileHasDot)
- .filter(isNotBasefile)
- .filter(isJsFile)
- .forEach((file) => {
- const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
- models[model.name] = model;
- });
- Object.keys(models).forEach((modelName) => {
- if (models[modelName].associate) {
- models[modelName].associate(models);
- }
- });
- if (dbConfig.connectionLogging) {
- await sequelize.authenticate();
- console.log('Sequelize successfully connected!');
- }
- return { sequelize, Sequelize, models };
- };
Add Comment
Please, Sign In to add comment