# Adding the unique constraint will lead to the index being destroyed and a new
# unique index being created.
# To not rely on this implicit behavior, we explicitly delete the old index,
# and then create the new indexes.
# This is not really needed for the upwards migration, but if we can't be sure
# about the indexes names, it gets harder to do the DOWN migration later.
# Therefore we do this magic manually.
UP_SQL = """
ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk;
ALTER TABLE afe_shards_labels DROP INDEX shard_label_id_fk;
ALTER TABLE `afe_shards_labels` ADD UNIQUE `shard_label_id_uc` (`label_id`);
ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk
FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`);
"""
# Normally removing unique constraints is done just by deleting the index.
# This doesn't work here, as the index is also needed for the foreign key.
# Making an index back non-unique doesn't work in mysql.
# Therefore delete the foreign key, delete the index, re-add the foreign key.
DOWN_SQL = """
ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk;
ALTER TABLE afe_shards_labels DROP INDEX shard_label_id_uc;
ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk
FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`);
"""