Revert "Revert "[autotest] Add shard tables and models to Autotest""

This reverts commit c1a9d91f65d8fa5225ab673266d165e759c645ab.

Change-Id: Ic6e01cbf06279e19b87926a076548731677024fa
Reviewed-on: https://chromium-review.googlesource.com/214027
Reviewed-by: Alex Miller <milleral@chromium.org>
Tested-by: Jakob Jülich <jakobjuelich@chromium.org>
Commit-Queue: Jakob Jülich <jakobjuelich@chromium.org>
diff --git a/frontend/migrations/094_add_shards.py b/frontend/migrations/094_add_shards.py
new file mode 100644
index 0000000..fbf4c8a
--- /dev/null
+++ b/frontend/migrations/094_add_shards.py
@@ -0,0 +1,31 @@
+UP_SQL = """
+CREATE TABLE afe_shards (
+  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
+) ENGINE=innodb;
+
+ALTER TABLE afe_jobs ADD COLUMN shard_id INT NULL;
+ALTER TABLE afe_jobs ADD CONSTRAINT jobs_to_shard_ibfk
+    FOREIGN KEY (shard_id) REFERENCES afe_shards(id);
+
+CREATE TABLE afe_shards_labels (
+    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
+    shard_id INT NOT NULL,
+    label_id INT NOT NULL
+) ENGINE=InnoDB;
+
+ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_shard_id_fk
+    FOREIGN KEY (`shard_id`) REFERENCES `afe_shards` (`id`);
+ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk
+    FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`);
+"""
+
+DOWN_SQL = """
+ALTER TABLE afe_jobs DROP FOREIGN KEY jobs_to_shard_ibfk;
+ALTER TABLE afe_jobs DROP COLUMN shard_id;
+
+ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk;
+ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_shard_id_fk;
+DROP TABLE afe_shards_labels;
+
+DROP TABLE afe_shards;
+"""