845f4ba82fab130e038902b6d81f2737a8438c10
[motion.git] / server / models / module.js
1 /**
2  * Module Model
3  */
4
5 module.exports = function(sequelize, DataTypes) {
6
7   var Module = sequelize.define('Module', {
8     name: {
9       type: DataTypes.STRING,
10       allowNull: false,
11       validate: {
12         notEmpty: true
13       }
14     },
15     title: DataTypes.STRING,
16     path: DataTypes.STRING
17   }, {
18     tableName: 'modules',
19     associate: function(models) {
20       Module.belongsToMany(models.User, {
21         through: models.UserHasModule,
22         required: false
23       });
24       Module.hasMany(models.Module, {
25         as: 'SubModules'
26       });
27       Module.addScope('submodules', {
28         include: [{
29           model: models.Module,
30           as: 'SubModules',
31           required: false,
32           include: [{
33             all: true
34           }]
35         }]
36       });
37     }
38   });
39
40   return Module;
41 };