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`')