1 |
|
2 |
|
3 |
|
4 |
|
5 | "use strict";
|
6 |
|
7 | var fs = require("fs"),
|
8 | path = require("path"),
|
9 | exists = require('fs-exists-sync'),
|
10 | Sequelize = require("sequelize"),
|
11 | middleware = require('./middleware/index.js'),
|
12 | paths = require('../configs/paths'),
|
13 | config = require('../configs/config')
|
14 |
|
15 | module.exports = class {
|
16 |
|
17 | constructor() {
|
18 | this.middleware = new middleware();
|
19 |
|
20 | return this.connect();
|
21 | }
|
22 |
|
23 | connect() {
|
24 | if (exists(paths.app.models)) {
|
25 | var sequelize = new Sequelize(config('database_name'), ('database_username') || ('database_user'), ('database_password'), ('database_config')),
|
26 | db = {};
|
27 |
|
28 | fs.readdirSync(paths.app.models)
|
29 | .filter((file) => {
|
30 | return (file.indexOf(".") !== 0 && file.indexOf(".mongoose.js") == -1);
|
31 | })
|
32 | .forEach((file) => {
|
33 | var model = sequelize.import(path.join(paths.app.models, file));
|
34 | db[model.name] = model;
|
35 | });
|
36 |
|
37 | Object.keys(db).forEach((modelName) => {
|
38 | if ("associate" in db[modelName]) {
|
39 | db[modelName].associate(db);
|
40 | }
|
41 | });
|
42 |
|
43 | db.sequelize = sequelize;
|
44 |
|
45 | return db;
|
46 | }
|
47 | return null;
|
48 | }
|
49 |
|
50 | }
|