42 lines
1.6 KiB
JavaScript
42 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
var async = require('async');
|
|
|
|
exports.up = function(db, callback) {
|
|
db.runSql('ALTER TABLE apps DROP INDEX location_domain_unique_index, DROP FOREIGN KEY apps_domain_constraint, DROP COLUMN domain, DROP COLUMN location, DROP COLUMN dnsRecordId', function (error) {
|
|
if (error) console.error(error);
|
|
callback(error);
|
|
});
|
|
};
|
|
|
|
exports.down = function(db, callback) {
|
|
db.all('SELECT * from subdomains WHERE type = ?', [ 'primary' ], function (error, results) {
|
|
if (error) return callback(error);
|
|
|
|
var cmd = 'ALTER TABLE apps'
|
|
+ ' ADD COLUMN location VARCHAR(128),'
|
|
+ ' ADD COLUMN domain VARCHAR(128),'
|
|
+ ' ADD COLUMN dnsRecordId VARCHAR(512)';
|
|
|
|
db.runSql(cmd, function (error) {
|
|
if (error) return callback(error);
|
|
|
|
var queries = [ db.runSql.bind(db, 'START TRANSACTION;') ];
|
|
results.forEach(function (d) {
|
|
queries.push(db.runSql.bind(db, 'UPDATE apps SET domain = ?, location = ?, dnsRecordId = ? WHERE id = ?', [ d.domain, d.subdomain, d.appId, d.dnsRecordId ]));
|
|
});
|
|
queries.push(db.runSql.bind(db, 'COMMIT'));
|
|
|
|
async.series(queries, function (error) {
|
|
if (error) return callback(error);
|
|
|
|
var cmd = 'ALTER TABLE apps'
|
|
+ ' ADD CONSTRAINT apps_domain_constraint FOREIGN KEY(domain) REFERENCES domains(domain),'
|
|
+ ' ADD UNIQUE location_domain_unique_index (location, domain)';
|
|
|
|
db.runSql(cmd, callback);
|
|
});
|
|
});
|
|
});
|
|
};
|