Files
absens-api/models/migration.js

71 lines
1.6 KiB
JavaScript

"use strict";
const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const process = require("process");
const basename = path.basename(__filename);
let config;
try {
// Prefer legacy app-specific configuration when available
// eslint-disable-next-line import/no-dynamic-require, global-require
config = require("../app/config/db.config.js");
} catch (error) {
if (error.code !== "MODULE_NOT_FOUND") {
throw error;
}
// Fallback to the shared config loader
// eslint-disable-next-line import/no-dynamic-require, global-require
const appConfig = require("../src/config/config.js");
const dbConfig = appConfig.db || {};
config = {
database: dbConfig.name,
username: dbConfig.username,
password: dbConfig.password,
host: dbConfig.host,
port: dbConfig.port,
dialect: dbConfig.dialect,
logging: false
};
}
require("dotenv").config();
const db = {};
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config
);
fs.readdirSync(__dirname)
.filter((file) => {
return (
file.indexOf(".") !== 0 &&
file !== basename &&
file.slice(-3) === ".js" &&
file.indexOf(".test.js") === -1
);
})
.forEach((file) => {
const model = require(path.join(__dirname, file))(
sequelize,
Sequelize.DataTypes
);
db[model.name] = model;
});
Object.keys(db).forEach((modelName) => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
// db.Sequelize = Sequelize;
db.Op = Sequelize.Op;
module.exports = db;