73e1bac1cc04f1a3a3c24c80d72fe3682605beab
[motion.git] / server / models / index.js
1 "use strict";
2
3 var fs = require("fs");
4 var path = require("path");
5 var config = require('../config/environment');
6 var Sequelize = require("sequelize");
7 var moment = require('moment');
8
9 //Used to disable all warnings for Promise!
10 Sequelize.Promise.config({
11   // Enables all warnings except forgotten return statements.
12   warnings: {
13     wForgottenReturn: false
14   }
15 });
16
17 var sequelize = new Sequelize(config.db.database, config.db.username, config.db.password, {
18   host: config.db.host,
19   dialect: 'mysql',
20   timezone: moment().format("Z"),
21   logging: false,
22   define: {
23     charset: 'utf8',
24     collate: 'utf8_general_ci'
25   }
26 });
27
28 var db = {};
29
30 fs
31   .readdirSync(__dirname)
32   .filter(function(file) {
33     return (fs.lstatSync(path.join(__dirname, file)).isFile()) &&
34       (file.indexOf(".") !== 0) && (file.indexOf('.spec.') === -1) && (file !== "index.js");
35   })
36   .forEach(function(file) {
37     var model = sequelize["import"](path.join(__dirname, file));
38     db[model.name] = model;
39   });
40
41 // Invoke associations on each of the models
42 Object.keys(db).forEach(function(modelName) {
43   if (db[modelName].options.hasOwnProperty('associate')) {
44     db[modelName].options.associate(db);
45   }
46 });
47
48 db.history = {};
49
50 var sequelize_history = new Sequelize(config.db_history.database, config.db_history.username, config.db_history.password, {
51   host: config.db_history.host,
52   dialect: 'mysql',
53   timezone: moment().format("Z"),
54   logging: false,
55   define: {
56     charset: 'utf8',
57     collate: 'utf8_general_ci'
58   }
59 });
60
61 fs
62   .readdirSync(path.join(__dirname, 'history'))
63   .filter(function(file) {
64     return (fs.lstatSync(path.join(__dirname, 'history', file)).isFile()) &&
65       (file.indexOf(".") !== 0) && (file.indexOf('.spec.') === -1) && (file !== "index.js");
66   })
67   .forEach(function(file) {
68     var model = sequelize_history["import"](path.join(__dirname, 'history', file));
69     db.history[model.name] = model;
70   });
71
72 // Invoke associations on each of the models
73 Object.keys(db.history).forEach(function(modelName) {
74   if (db.history[modelName].options.hasOwnProperty('associate')) {
75     db.history[modelName].options.associate(db.history);
76   }
77 });
78
79 db.sequelize = sequelize;
80 db.sequelize_history = sequelize_history;
81 db.Sequelize = Sequelize;
82
83 module.exports = db;