2018-06-29 11:29:30 +02:00
'use strict' ;
var async = require ( 'async' ) ;
exports . up = function ( db , callback ) {
2018-06-29 18:09:10 +02:00
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 ) {
2018-06-29 11:29:30 +02:00
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'
2018-06-29 18:09:10 +02:00
+ ' ADD COLUMN location VARCHAR(128),'
+ ' ADD COLUMN domain VARCHAR(128),'
+ ' ADD COLUMN dnsRecordId VARCHAR(512)' ;
2018-06-29 11:29:30 +02:00
db . runSql ( cmd , function ( error ) {
if ( error ) return callback ( error ) ;
var queries = [ db . runSql . bind ( db , 'START TRANSACTION;' ) ] ;
2018-06-29 18:09:10 +02:00
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 ] ) ) ;
2018-06-29 11:29:30 +02:00
} ) ;
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 ) ;
} ) ;
} ) ;
} ) ;
} ;