35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var async = require('async');
|
|
|
|
exports.up = function(db, callback) {
|
|
async.series([
|
|
db.runSql.bind(db, 'START TRANSACTION;'),
|
|
db.runSql.bind(db, 'ALTER TABLE mailboxes ADD COLUMN type VARCHAR(16)'),
|
|
function addMailboxType(done) {
|
|
db.all('SELECT * from mailboxes', [ ], function (error, results) {
|
|
if (error) return done(error);
|
|
|
|
async.eachSeries(results, function (mailbox, iteratorCallback) {
|
|
let type = 'mailbox';
|
|
if (mailbox.aliasTarget) {
|
|
type = 'alias';
|
|
} else if (mailbox.membersJson) {
|
|
type = 'list';
|
|
}
|
|
db.runSql('UPDATE mailboxes SET type = ? WHERE name = ? AND domain = ?', [ type, mailbox.name, mailbox.domain ], iteratorCallback);
|
|
}, done);
|
|
});
|
|
},
|
|
db.runSql.bind(db, 'ALTER TABLE mailboxes MODIFY type VARCHAR(16) NOT NULL'),
|
|
db.runSql.bind(db, 'COMMIT')
|
|
], callback);
|
|
};
|
|
|
|
exports.down = function(db, callback) {
|
|
db.runSql('ALTER TABLE mailboxes DROP COLUMN membersJson', function (error) {
|
|
if (error) console.error(error);
|
|
callback(error);
|
|
});
|
|
};
|