-var _0x8211=["\x65\x78\x70\x6F\x72\x74\x73","\x4D\x6F\x64\x75\x6C\x65","\x53\x54\x52\x49\x4E\x47","\x6D\x6F\x64\x75\x6C\x65\x73","\x75\x73\x65\x72\x5F\x68\x61\x73\x5F\x6D\x6F\x64\x75\x6C\x65\x73","\x62\x65\x6C\x6F\x6E\x67\x73\x54\x6F\x4D\x61\x6E\x79","\x64\x65\x66\x69\x6E\x65"];module[_0x8211[0]]=function(_0xd845x1,_0xd845x2){var _0xd845x3=_0xd845x1[_0x8211[6]](_0x8211[1],{name:{type:_0xd845x2[_0x8211[2]],unique:true,allowNull:false,validate:{notEmpty:true}},title:_0xd845x2[_0x8211[2]]},{tableName:_0x8211[3],associate:function(_0xd845x4){_0xd845x3[_0x8211[5]](_0xd845x4.User,{through:_0x8211[4]})}});return _0xd845x3;};
\ No newline at end of file
+/**
+ * Module Model
+ */
+
+module.exports = function(sequelize, DataTypes) {
+
+ var Module = sequelize.define('Module', {
+ name: {
+ type: DataTypes.STRING,
+ allowNull: false,
+ validate: {
+ notEmpty: true
+ }
+ },
+ title: DataTypes.STRING,
+ path: DataTypes.STRING
+ }, {
+ tableName: 'modules',
+ associate: function(models) {
+ Module.belongsToMany(models.User, {
+ through: models.UserHasModule,
+ required: false
+ });
+ Module.hasMany(models.Module, {
+ as: 'SubModules'
+ });
+ Module.addScope('submodules', {
+ include: [{
+ model: models.Module,
+ as: 'SubModules',
+ required: false,
+ include: [{
+ all: true
+ }]
+ }]
+ });
+ }
+ });
+
+ return Module;
+};