diff --git a/server/src/db/config/database.js b/server/src/db/config/database.js new file mode 100644 index 00000000..c3ce5402 --- /dev/null +++ b/server/src/db/config/database.js @@ -0,0 +1,31 @@ +require('dotenv').config({ path: './.env' }); + +module.exports = { + development: { + username: process.env.DB_USER, + password: process.env.DB_PASSWORD, + database: process.env.DB_NAME, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + dialect: 'postgres', + logging: console.log, + }, + test: { + username: process.env.DB_USER, + password: process.env.DB_PASSWORD, + database: process.env.TEST_DB_NAME, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + dialect: 'postgres', + logging: false, + }, + production: { + username: process.env.DB_USER, + password: process.env.DB_PASSWORD, + database: process.env.DB_NAME, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + dialect: 'postgres', + logging: false, + } +}; \ No newline at end of file diff --git a/server/src/db/models/index.js b/server/src/db/models/index.js new file mode 100644 index 00000000..dc97bee9 --- /dev/null +++ b/server/src/db/models/index.js @@ -0,0 +1,43 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const Sequelize = require('sequelize'); +const process = require('process'); +const basename = path.basename(__filename); +const env = process.env.NODE_ENV || 'development'; +const config = require('../config/database.js')[env]; +const db = {}; + +let sequelize; +if (config.use_env_variable) { + sequelize = new Sequelize(process.env[config.use_env_variable], config); +} else { + 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; + +module.exports = db; \ No newline at end of file