diff --git a/treeherder/model/migrations/0046_repository_repo_url_active_idx.py b/treeherder/model/migrations/0046_repository_repo_url_active_idx.py new file mode 100644 index 00000000000..a6be0b6efa8 --- /dev/null +++ b/treeherder/model/migrations/0046_repository_repo_url_active_idx.py @@ -0,0 +1,27 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + # Use non-atomic so we can create the index CONCURRENTLY + atomic = False + + dependencies = [ + ("model", "0045_alter_failureline_expected_alter_failureline_level_and_more"), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + database_operations=[ + migrations.RunSQL( + sql="CREATE INDEX CONCURRENTLY IF NOT EXISTS repo_url_active_idx ON repository (url, active_status);", + reverse_sql="DROP INDEX IF EXISTS repo_url_active_idx;", + ), + ], + state_operations=[ + migrations.AddIndex( + model_name="repository", + index=models.Index(fields=["url", "active_status"], name="repo_url_active_idx"), + ), + ], + ), + ] diff --git a/treeherder/model/models.py b/treeherder/model/models.py index 6de26f11329..eb9386d0f2b 100644 --- a/treeherder/model/models.py +++ b/treeherder/model/models.py @@ -113,6 +113,9 @@ class Repository(models.Model): class Meta: db_table = "repository" verbose_name_plural = "repositories" + indexes = [ + models.Index(fields=["url", "active_status"], name="repo_url_active_idx"), + ] @classmethod def fetch_all_names(cls) -> list[str]: