From 561d370cef00d35e0ee86e2beea907799a902cdc Mon Sep 17 00:00:00 2001
From: Dominik George <nik@naturalnet.de>
Date: Wed, 4 Sep 2019 15:22:56 +0200
Subject: [PATCH] Add db indexes. Advances BiscuIT-ng#55.

---
 .../chronos/migrations/0002_db_indexes.py     | 30 +++++++++++++++++++
 biscuit/apps/chronos/models.py                |  4 +++
 2 files changed, 34 insertions(+)
 create mode 100644 biscuit/apps/chronos/migrations/0002_db_indexes.py

diff --git a/biscuit/apps/chronos/migrations/0002_db_indexes.py b/biscuit/apps/chronos/migrations/0002_db_indexes.py
new file mode 100644
index 00000000..49be25b9
--- /dev/null
+++ b/biscuit/apps/chronos/migrations/0002_db_indexes.py
@@ -0,0 +1,30 @@
+# Generated by Django 2.2.4 on 2019-09-04 13:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0001_initial'),
+        ('chronos', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterUniqueTogether(
+            name='lessonsubstitution',
+            unique_together={('school', 'lesson_period', 'week')},
+        ),
+        migrations.AddIndex(
+            model_name='lesson',
+            index=models.Index(fields=['date_start', 'date_end'], name='chronos_les_date_st_5ecc62_idx'),
+        ),
+        migrations.AddIndex(
+            model_name='lessonperiod',
+            index=models.Index(fields=['lesson', 'period'], name='chronos_les_lesson__05250e_idx'),
+        ),
+        migrations.AddIndex(
+            model_name='timeperiod',
+            index=models.Index(fields=['time_start', 'time_end'], name='chronos_tim_time_st_491e4c_idx'),
+        ),
+    ]
diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py
index d081812b..1bf172e4 100644
--- a/biscuit/apps/chronos/models.py
+++ b/biscuit/apps/chronos/models.py
@@ -43,6 +43,7 @@ class TimePeriod(SchoolRelated):
     class Meta:
         unique_together = [['school', 'weekday', 'period']]
         ordering = ['weekday', 'period']
+        indexes = [models.Index(fields=['time_start', 'time_end'])]
 
 
 class Subject(SchoolRelated):
@@ -101,6 +102,7 @@ class Lesson(SchoolRelated):
 
     class Meta:
         ordering = ['date_start']
+        indexes = [models.Index(fields=['date_start', 'date_end'])]
 
 
 class LessonSubstitution(SchoolRelated):
@@ -118,6 +120,7 @@ class LessonSubstitution(SchoolRelated):
     room = models.ForeignKey('Room', models.CASCADE, null=True)
 
     class Meta:
+        unique_together = [['school', 'lesson_period', 'week']]
         ordering = ['lesson_period__lesson__date_start', 'week',
                     'lesson_period__period__weekday', 'lesson_period__period__period']
 
@@ -165,3 +168,4 @@ class LessonPeriod(SchoolRelated):
 
     class Meta:
         ordering = ['lesson__date_start', 'period__weekday', 'period__period']
+        indexes = [models.Index(fields=['lesson', 'period'])]
-- 
GitLab