Built motion from commit 82438f7.|0.0.115
[motion.git] / server / models / sms_account.js
1 'use strict';
2
3 module.exports = function(sequelize, DataTypes) {
4   var SmsAccount = sequelize.define('SmsAccount', {
5     name: {
6       type: DataTypes.STRING
7     },
8     description: {
9       type: DataTypes.STRING
10     },
11     type: {
12       type: DataTypes.ENUM('twilio', 'skebby')
13     },
14     smstype: {
15       type: DataTypes.ENUM('basic', 'classic', 'classic+')
16     },
17     remote: DataTypes.STRING,
18     fidelity: {
19       type: DataTypes.BOOLEAN,
20       defaultValue: false
21     },
22     timeout: {
23       type: DataTypes.INTEGER,
24       defaultValue: 0
25     },
26     phone: {
27       // type: DataTypes.INTEGER,
28       // unique: true
29       type: DataTypes.STRING,
30       unique: true,
31       validate: {
32         is: /^[0-9]+$/
33       }
34     },
35     sid: {
36       type: DataTypes.STRING
37     },
38     token: {
39       type: DataTypes.STRING
40     },
41     username: {
42       type: DataTypes.STRING
43     },
44     password: {
45       type: DataTypes.STRING
46     },
47     acceptUrl: {
48       type: DataTypes.STRING
49     },
50     rejectUrl: {
51       type: DataTypes.STRING
52     },
53     acceptMethod: {
54       type: DataTypes.ENUM('GET', 'POST')
55     },
56     rejectMethod: {
57       type: DataTypes.ENUM('GET', 'POST')
58     },
59     actions: {
60       type: DataTypes.STRING,
61       get: function() {
62         return this.getDataValue('actions') ? JSON.parse(this.getDataValue('actions')) : [];
63       },
64       set: function(val) {
65         return this.setDataValue('actions', JSON.stringify(val));
66       }
67     }
68   }, {
69     tableName: 'sms_accounts',
70     associate: function(models) {
71       SmsAccount.hasMany(models.SmsRoom);
72       SmsAccount.hasMany(models.SmsApplication, {
73         onDelete: 'cascade'
74       });
75       SmsAccount.hasMany(models.SmsMessage);
76       // SCOPES
77       SmsAccount.hasMany(models.SmsDisposition);
78       SmsAccount.belongsTo(models.List);
79     }
80   });
81   return SmsAccount;
82 };