diff --git a/django_tasks/backends/database/migrations/0010_add_indexes.py b/django_tasks/backends/database/migrations/0010_add_indexes.py new file mode 100644 index 0000000..3fd7ec7 --- /dev/null +++ b/django_tasks/backends/database/migrations/0010_add_indexes.py @@ -0,0 +1,37 @@ +# Generated by Django 5.1.1 on 2024-10-25 18:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("django_tasks_database", "0009_remove_results_field"), + ] + + operations = [ + migrations.AlterField( + model_name="dbtaskresult", + name="queue_name", + field=models.CharField( + default="default", max_length=64, verbose_name="queue name" + ), + ), + migrations.AddIndex( + model_name="dbtaskresult", + index=models.Index(fields=["status"], name="django_task_status_9e2de0_idx"), + ), + migrations.AddIndex( + model_name="dbtaskresult", + index=models.Index( + fields=["queue_name"], name="django_task_queue_n_99c321_idx" + ), + ), + migrations.AddIndex( + model_name="dbtaskresult", + index=models.Index( + models.OrderBy(models.F("priority"), descending=True), + models.OrderBy(models.F("run_after"), descending=True, nulls_last=True), + name="django_task_ordering_idx", + ), + ), + ] diff --git a/django_tasks/backends/database/models.py b/django_tasks/backends/database/models.py index 039fb3c..8f01e66 100644 --- a/django_tasks/backends/database/models.py +++ b/django_tasks/backends/database/models.py @@ -95,7 +95,9 @@ class DBTaskResult(GenericBase[P, T], models.Model): task_path = models.TextField(_("task path")) - queue_name = models.TextField(_("queue name"), default=DEFAULT_QUEUE_NAME) + queue_name = models.CharField( + _("queue name"), default=DEFAULT_QUEUE_NAME, max_length=64 + ) backend_name = models.TextField(_("backend name")) run_after = models.DateTimeField(_("run after"), null=True) @@ -110,6 +112,16 @@ class Meta: verbose_name = _("Task Result") verbose_name_plural = _("Task Results") + indexes = [ + models.Index(fields=["status"]), + models.Index(fields=["queue_name"]), + models.Index( + F("priority").desc(), + F("run_after").desc(nulls_last=True), + name="django_task_ordering_idx", + ), + ] + if django.VERSION >= (5, 1): constraints = [ CheckConstraint(