diff --git a/onadata/apps/logger/migrations/0005_add_date_fields_indexing.py b/onadata/apps/logger/migrations/0005_add_date_fields_indexing.py new file mode 100644 index 0000000000..f5af866ac6 --- /dev/null +++ b/onadata/apps/logger/migrations/0005_add_date_fields_indexing.py @@ -0,0 +1,54 @@ +# Generated by Django 3.2.18 on 2023-03-14 12:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + atomic = False + + dependencies = [ + ('logger', '0004_update_instance_geoms'), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + database_operations=[ + migrations.RunSQL( + sql='CREATE INDEX CONCURRENTLY "logger_inst_date_cr_42899d_idx" ON "logger_instance" ("date_created");', + reverse_sql='DROP INDEX "logger_inst_date_cr_42899d_idx";', + ), + migrations.RunSQL( + sql='CREATE INDEX CONCURRENTLY "logger_inst_date_mo_5a1bd3_idx" ON "logger_instance" ("date_modified");', + reverse_sql='DROP INDEX "logger_inst_date_mo_5a1bd3_idx";', + ), + migrations.RunSQL( + sql='CREATE INDEX CONCURRENTLY "logger_inst_deleted_da31a3_idx" ON "logger_instance" ("deleted_at");', + reverse_sql='DROP INDEX "logger_inst_deleted_da31a3_idx";', + ), + ], + state_operations=[ + migrations.AddIndex( + model_name="instance", + index=models.Index( + fields=["date_created"], name="logger_inst_date_cr_42899d_idx" + ), + ), + migrations.AddIndex( + model_name="instance", + index=models.Index( + fields=["date_modified"], name="logger_inst_date_mo_5a1bd3_idx" + ), + ), + migrations.AddIndex( + model_name="instance", + index=models.Index( + fields=["deleted_at"], name="logger_inst_deleted_da31a3_idx" + ), + ), + ], + ) + ] + + + + diff --git a/onadata/apps/logger/migrations/0005_auto_20230308_0252.py b/onadata/apps/logger/migrations/0005_auto_20230308_0252.py deleted file mode 100644 index 485a8bfa6f..0000000000 --- a/onadata/apps/logger/migrations/0005_auto_20230308_0252.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 3.2.16 on 2023-03-08 07:52 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ("logger", "0004_update_instance_geoms"), - ] - - operations = [ - migrations.SeparateDatabaseAndState( - database_operations=[ - migrations.RunSQL( - sql=""" - CREATE INDEX "logger_instance_date_created_b2427770" - ON "logger_instance" ("date_created"); - """, - reverse_sql=""" - DROP INDEX "logger_instance_date_created_b2427770"; - """, - ), - migrations.RunSQL( - sql=""" - CREATE INDEX "logger_instance_date_modified_a32599fc" - ON "logger_instance" ("date_modified"); - """, - reverse_sql=""" - DROP INDEX "logger_instance_date_modified_a32599fc"; - """, - ), - ], - state_operations=[ - migrations.AlterField( - model_name="instance", - name="date_created", - field=models.DateTimeField(auto_now_add=True, db_index=True), - ), - migrations.AlterField( - model_name="instance", - name="date_modified", - field=models.DateTimeField(auto_now=True, db_index=True), - ), - ], - ) - ] diff --git a/onadata/apps/logger/models/instance.py b/onadata/apps/logger/models/instance.py index a5cd3bbd78..47000b7522 100644 --- a/onadata/apps/logger/models/instance.py +++ b/onadata/apps/logger/models/instance.py @@ -649,10 +649,10 @@ class Instance(models.Model, InstanceBaseClass): survey_type = models.ForeignKey("logger.SurveyType", on_delete=models.PROTECT) # shows when we first received this instance - date_created = models.DateTimeField(auto_now_add=True, db_index=True) + date_created = models.DateTimeField(auto_now_add=True) # this will end up representing "date last parsed" - date_modified = models.DateTimeField(auto_now=True, db_index=True) + date_modified = models.DateTimeField(auto_now=True) # this will end up representing "date instance was deleted" deleted_at = models.DateTimeField(null=True, default=None) @@ -694,6 +694,11 @@ class Instance(models.Model, InstanceBaseClass): class Meta: app_label = "logger" unique_together = ("xform", "uuid") + indexes = [ + models.Index(fields=['date_created']), + models.Index(fields=['date_modified']), + models.Index(fields=['deleted_at']), + ] @classmethod def set_deleted_at(cls, instance_id, deleted_at=timezone.now(), user=None):