no need for a special test setup handling in the migration script

This commit is contained in:
Johannes Zellner
2017-11-24 23:48:59 +01:00
parent 4091315589
commit 34ec09588a
+40 -55
View File
@@ -4,66 +4,51 @@ var async = require('async'),
safe = require('safetydance'); safe = require('safetydance');
exports.up = function(db, callback) { exports.up = function(db, callback) {
function prepareTestSetupIfNeeded(done) { // first check precondtion of domain entry in settings
if (process.env.BOX_ENV !== 'test') return done(); db.all('SELECT * FROM settings WHERE name = ?', [ 'domain' ], function (error, result) {
const settings = [
[ 'domain', JSON.stringify({ fqdn: 'example.com', zoneName: 'example.com' })],
[ 'dns_config', JSON.stringify({ provider: 'manual', wildcard: true })]
];
async.eachSeries(settings, function (setting, callback) {
db.runSql('INSERT INTO settings (name, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE value=VALUES(value)', setting, callback);
}, done);
}
prepareTestSetupIfNeeded(function (error) {
if (error) return callback(error); if (error) return callback(error);
// first check precondtion of domain entry in settings var domain = {};
db.all('SELECT * FROM settings WHERE name = ?', [ 'domain' ], function (error, result) { if (result[0]) domain = safe.JSON.parse(result[0].value) || {};
if (error) return callback(error);
var domain = {}; async.series([
if (result[0]) domain = safe.JSON.parse(result[0].value) || {}; db.runSql.bind(db, 'START TRANSACTION;'),
function addAppsDomainColumn(done) {
db.runSql('ALTER TABLE apps ADD COLUMN domain VARCHAR(128)', [], done);
},
function setAppDomain(done) {
if (!domain.fqdn) return done(); // skip for new cloudrons without a domain
db.runSql('UPDATE apps SET domain = ?', [ domain.fqdn ], done);
},
function addAppsLocationDomainUniqueConstraint(done) {
db.runSql('ALTER TABLE apps ADD UNIQUE location_domain_unique_index (location, domain)', [], done);
},
function removePresetupAdminGroupIfNew(done) {
// do not delete on update, will update the record in setMailboxesDomain()
if (domain.fqdn) return done();
async.series([ // this will be finally created once we have a domain when we create the owner in user.js
db.runSql.bind(db, 'START TRANSACTION;'), const ADMIN_GROUP_ID = 'admin'; // see constants.js
function addAppsDomainColumn(done) { db.runSql('DELETE FROM groups WHERE id = ?', [ ADMIN_GROUP_ID ], function (error) {
db.runSql('ALTER TABLE apps ADD COLUMN domain VARCHAR(128)', [], done); if (error) return done(error);
},
function setAppDomain(done) {
if (!domain.fqdn) return done(); // skip for new cloudrons without a domain
db.runSql('UPDATE apps SET domain = ?', [ domain.fqdn ], done);
},
function addAppsLocationDomainUniqueConstraint(done) {
db.runSql('ALTER TABLE apps ADD UNIQUE location_domain_unique_index (location, domain)', [], done);
},
function removePresetupAdminGroupIfNew(done) {
// do not delete on update, will update the record in setMailboxesDomain()
if (domain.fqdn) return done();
// this will be finally created once we have a domain when we create the owner in user.js db.runSql('DELETE FROM mailboxes WHERE ownerId = ?', [ ADMIN_GROUP_ID ], done);
const ADMIN_GROUP_ID = 'admin'; // see constants.js });
db.runSql('DELETE FROM groups WHERE id = ?', [ ADMIN_GROUP_ID ], function (error) { },
if (error) return done(error); function addMailboxesDomainColumn(done) {
console.log('add mailboxes domain')
db.runSql('DELETE FROM mailboxes WHERE ownerId = ?', [ ADMIN_GROUP_ID ], done); db.runSql('ALTER TABLE mailboxes ADD COLUMN domain VARCHAR(128)', [], done);
}); },
}, function setMailboxesDomain(done) {
function addMailboxesDomainColumn(done) { if (!domain.fqdn) return done(); // skip for new cloudrons without a domain
db.runSql('ALTER TABLE mailboxes ADD COLUMN domain VARCHAR(128)', [], done); console.log('update mailboxes domain')
}, db.runSql('UPDATE mailboxes SET domain = ?', [ domain.fqdn ], done);
function setMailboxesDomain(done) { },
if (!domain.fqdn) return done(); // skip for new cloudrons without a domain function dropAppsLocationUniqueConstraint(done) {
db.runSql('UPDATE mailboxes SET domain = ?', [ domain.fqdn ], done); db.runSql('ALTER TABLE apps DROP INDEX location', [], done);
}, },
function dropAppsLocationUniqueConstraint(done) { db.runSql.bind(db, 'COMMIT')
db.runSql('ALTER TABLE apps DROP INDEX location', [], done); ], callback);
},
db.runSql.bind(db, 'COMMIT')
], callback);
});
}); });
}; };