From 69e794f1af2f09f362a294fc429bb13fc131a2e1 Mon Sep 17 00:00:00 2001 From: Stan Triepels <1939656+GDay@users.noreply.github.com> Date: Sun, 8 Sep 2024 03:37:28 +0200 Subject: [PATCH] Add index on succeeded tasks (#164) * Add index on task table * also add models file * add make commands and limit index * format --- Makefile | 9 +++++++++ .../migrations/0018_task_success_index.py | 20 +++++++++++++++++++ django_q/models.py | 8 ++++++++ 3 files changed, 37 insertions(+) create mode 100644 django_q/migrations/0018_task_success_index.py diff --git a/Makefile b/Makefile index 24197e6..0a99c8d 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,15 @@ dev: test: docker-compose -f test-services-docker-compose.yaml run --rm django-q2 poetry run pytest +shell: + docker-compose -f test-services-docker-compose.yaml run --rm django-q2 poetry run python manage.py shell + +makemigrations: + docker-compose -f test-services-docker-compose.yaml run --rm django-q2 poetry run python manage.py makemigrations + +migrate: + docker-compose -f test-services-docker-compose.yaml run --rm django-q2 poetry run python manage.py migrate + createsuperuser: docker compose -f web-docker-compose.yaml run --rm web python manage.py createsuperuser diff --git a/django_q/migrations/0018_task_success_index.py b/django_q/migrations/0018_task_success_index.py new file mode 100644 index 0000000..f3c2204 --- /dev/null +++ b/django_q/migrations/0018_task_success_index.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.7 on 2024-03-05 17:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("django_q", "0017_task_cluster_alter"), + ] + + operations = [ + migrations.AddIndex( + model_name="task", + index=models.Index( + condition=models.Q(("success", True)), + fields=["group", "name", "func"], + name="success_index", + ), + ), + ] diff --git a/django_q/models.py b/django_q/models.py index b63adf5..bd4956c 100644 --- a/django_q/models.py +++ b/django_q/models.py @@ -5,6 +5,7 @@ from keyword import iskeyword from django import get_version from django.core.exceptions import ValidationError from django.db import models +from django.db.models import Q from django.template.defaultfilters import truncatechars from django.urls import reverse from django.utils import timezone @@ -111,6 +112,13 @@ class Task(models.Model): class Meta: app_label = "django_q" ordering = ["-stopped"] + indexes = [ + models.Index( + name="success_index", + fields=["group", "name", "func"], + condition=Q(success=True), + ), + ] class SuccessManager(models.Manager):