CREATE_MANY2MANY_TABLES = """ CREATE TABLE `autotests_dependency_labels` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `test_id` integer NOT NULL REFERENCES `autotests` (`id`), `label_id` integer NOT NULL REFERENCES `labels` (`id`), UNIQUE (`test_id`, `label_id`) ); CREATE TABLE `jobs_dependency_labels` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `job_id` integer NOT NULL REFERENCES `jobs` (`id`), `label_id` integer NOT NULL REFERENCES `labels` (`id`), UNIQUE (`job_id`, `label_id`) ); """ def migrate_up(manager): manager.execute('ALTER TABLE labels ' 'ADD COLUMN only_if_needed bool NOT NULL') manager.execute_script(CREATE_MANY2MANY_TABLES) def migrate_down(manager): manager.execute('ALTER TABLE labels DROP COLUMN only_if_needed') manager.execute('DROP TABLE IF EXISTS `autotests_dependency_labels`') manager.execute('DROP TABLE IF EXISTS `jobs_dependency_labels`')