'use strict'; var async = require('async'); exports.up = function(db, callback) { async.series([ db.runSql.bind(db, 'CREATE TABLE groupMembers_copy(groupId VARCHAR(128) NOT NULL, userId VARCHAR(128) NOT NULL, FOREIGN KEY(groupId) REFERENCES userGroups(id), FOREIGN KEY(userId) REFERENCES users(id), UNIQUE (groupId, userId)) CHARACTER SET utf8 COLLATE utf8_bin'), // In mysql CREATE TABLE.. LIKE does not copy indexes db.runSql.bind(db, 'INSERT INTO groupMembers_copy SELECT * FROM groupMembers GROUP BY groupId, userId'), db.runSql.bind(db, 'DROP TABLE groupMembers'), db.runSql.bind(db, 'ALTER TABLE groupMembers_copy RENAME TO groupMembers') ], callback); }; exports.down = function(db, callback) { async.series([ db.runSql.bind(db, 'ALTER TABLE groupMembers DROP INDEX groupMembers_member'), ], callback); };