-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathindex.js
64 lines (61 loc) · 1.67 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// eslint-disable-next-line
import pg from 'pg';
import Sequelize, { DataTypes } from 'sequelize';
import _lists from './lists';
import _notes from './notes';
import _users from './users';
let db = null;
export function getDB() {
if (db) {
return db;
}
let sequelize;
if (process.env.NODE_ENV === 'test') {
const SequelizeMock = require('sequelize-mock');
sequelize = new SequelizeMock();
} else {
const config = {
uri: `${process.env.DB_DIALECT}://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`,
options: {
host: process.env.DB_HOST,
logging: console.log,
dialect: process.env.DB_DIALECT,
dialectOptions: {
decimalNumbers: true,
multipleStatements: true
},
pool: {
min: 0,
max: 30,
idle: 60000,
acquire: 60000,
handleDisconnects: true,
evict: 3000
},
define: {
paranoid: true,
underScored: true,
underscoredAll: true,
timestamps: true
}
}
};
sequelize = new Sequelize(config.uri, config.options);
}
console.log('connected to database', sequelize);
const lists = _lists(sequelize, DataTypes);
const notes = _notes(sequelize, DataTypes);
const users = _users(sequelize, DataTypes);
notes.belongsTo(lists, { foreignKey: 'list_id' });
lists.hasMany(notes, { foreignKey: 'list_id' });
lists.belongsTo(users, { foreignKey: 'user_id' });
users.hasMany(lists, { foreignKey: 'user_id' });
db = {
lists,
notes,
users
};
return db;
}
getDB();
export default db;