Built motion from commit (unavailable).|2.5.14
[motion2.git] / server / migrations / 2.0.80.js
1 'use strict';
2
3 var BPromise = require('bluebird');
4 var util = require('util');
5
6 var logger = require('../config/logger')('migration');
7
8 var Sequence = function() {};
9
10 Sequence.prototype.enqueue = function(fn) {
11         this.tail = this.tail ? this.tail.finally(fn) : fn();
12 };
13
14 var Migration = function(queryInterface) {
15         this.queryInterface = queryInterface;
16         this.sequence = new Sequence();
17 };
18
19 Migration.prototype.changeColumn = function(table, column, type) {
20         var _this = this;
21         this.sequence.enqueue(function() {
22                 return _this.queryInterface
23                         .changeColumn(table, column, type)
24                         .then(function() {
25                                 logger.info('Changed column %s in table %s', column, table);
26                         })
27                         .catch(function(err) {
28                                 logger.info(JSON.stringify(err));
29                         });
30         });
31 };
32
33 Migration.prototype.addColumn = function(table, column, type) {
34         var _this = this;
35         this.sequence.enqueue(function() {
36                 return _this.queryInterface
37                         .addColumn(table, column, type)
38                         .then(function() {
39                                 logger.info('Added column %s to %s', column, table);
40                         })
41                         .catch(function(err) {
42                                 logger.info(JSON.stringify(err));
43                         });
44         });
45 };
46
47 Migration.prototype.dropTable = function(table) {
48         var _this = this;
49         this.sequence.enqueue(function() {
50                 return _this.queryInterface
51                         .dropTable(table, {
52                                 force: true
53                         })
54                         .then(function() {
55                                 logger.info('table dropped %s', table);
56                         })
57                         .catch(function(err) {
58                                 logger.info(JSON.stringify(err));
59                         });
60         });
61 };
62
63 Migration.prototype.addIndex = function(table, column, indexName) {
64         var _this = this;
65         this.sequence.enqueue(function() {
66                 return _this.queryInterface
67                         .addIndex(table, column, {
68                                 indexName: indexName
69                         })
70                         .then(function() {
71                                 logger.info('addIndex %s %s %s', table, column.join(','), indexName);
72                         })
73                         .catch(function(err) {
74                                 logger.info(JSON.stringify(err));
75                         });
76         });
77 };
78
79 Migration.prototype.removeIndex = function(table, indexName) {
80         var _this = this;
81         this.sequence.enqueue(function() {
82                 return _this.queryInterface
83                         .removeIndex(table, indexName)
84                         .then(function() {
85                                 logger.info('removeIndex %s %s', table, indexName);
86                         })
87                         .catch(function(err) {
88                                 logger.info(JSON.stringify(err));
89                         });
90         });
91 };
92
93 Migration.prototype.query = function(sql) {
94         var _this = this;
95         this.sequence.enqueue(function() {
96                 return _this.queryInterface.sequelize
97                         .query(sql)
98                         .then(function() {
99                                 logger.info('query %s', sql);
100                         })
101                         .catch(function(err) {
102                                 logger.info(JSON.stringify(err));
103                         });
104         });
105 };
106
107 Migration.prototype.removeColumn = function(table, column) {
108         var _this = this;
109         this.sequence.enqueue(function() {
110                 return _this.queryInterface
111                         .removeColumn(table, column)
112                         .then(function() {
113                                 logger.info('Removed column %s from %s', column, table);
114                         })
115                         .catch(function(err) {
116                                 logger.info(
117                                         util.inspect(err, {
118                                                 showHidden: false,
119                                                 depth: null
120                                         })
121                                 );
122                         });
123         });
124 };
125
126 Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
127         var _this = this;
128         this.sequence.enqueue(function() {
129                 return _this.queryInterface
130                         .renameColumn(table, oldColumn, newColumn)
131                         .then(function() {
132                                 logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
133                         })
134                         .catch(function(err) {
135                                 logger.info(
136                                         util.inspect(err, {
137                                                 showHidden: false,
138                                                 depth: null
139                                         })
140                                 );
141                         });
142         });
143 };
144
145 Migration.prototype.final = function(resolve) {
146         this.sequence.enqueue(function() {
147                 return resolve();
148         });
149 };
150
151 module.exports = {
152         up: function(queryInterface, Sequelize) {
153                 return new BPromise(function(resolve) {
154                         var migration = new Migration(queryInterface);
155
156                          // START SETTINGS
157                          migration.addColumn('settings', 'preferred', {
158                                 type: Sequelize.STRING
159                           });
160                 
161                           migration.addColumn('settings', 'defaultPreferred', {
162                                 type: Sequelize.BOOLEAN,
163                                 defaultValue: true
164                           });
165                           // END SETTINGS
166
167                         // START FINAL
168                         migration.final(resolve);
169                         // END FINAL
170                 });
171         },
172
173         down: function(queryInterface, Sequelize) {
174                 // var migration = new Migration(queryInterface);
175         }
176 };