From f7948a55bf28ed73022cdf25676fed8a1a3072ab Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Fri, 3 Feb 2023 22:24:28 -0700 Subject: [PATCH] Actually do the right indexes in migrations --- activities/migrations/0010_stator_indexes.py | 48 +++++++------------ activities/models/emoji.py | 1 + activities/models/post.py | 1 + activities/models/post_interaction.py | 4 +- stator/models.py | 4 +- users/migrations/0013_stator_indexes.py | 49 ++++++-------------- users/models/block.py | 1 + users/models/follow.py | 1 + users/models/identity.py | 1 + 9 files changed, 40 insertions(+), 70 deletions(-) diff --git a/activities/migrations/0010_stator_indexes.py b/activities/migrations/0010_stator_indexes.py index f5a2db2..3e7ad53 100644 --- a/activities/migrations/0010_stator_indexes.py +++ b/activities/migrations/0010_stator_indexes.py @@ -1,44 +1,19 @@ -# Generated by Django 4.1.4 on 2023-02-04 01:05 +# Generated by Django 4.1.4 on 2023-02-04 05:23 -from django.db import migrations, models +from django.db import migrations class Migration(migrations.Migration): dependencies = [ + ("users", "0013_stator_indexes"), ("activities", "0009_alter_timelineevent_index_together"), ] operations = [ - migrations.AlterField( - model_name="emoji", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="fanout", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="hashtag", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="post", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="postattachment", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="postinteraction", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), + migrations.AlterIndexTogether( + name="emoji", + index_together={("state_ready", "state_locked_until", "state")}, ), migrations.AlterIndexTogether( name="fanout", @@ -48,8 +23,19 @@ class Migration(migrations.Migration): name="hashtag", index_together={("state_ready", "state_locked_until", "state")}, ), + migrations.AlterIndexTogether( + name="post", + index_together={("state_ready", "state_locked_until", "state")}, + ), migrations.AlterIndexTogether( name="postattachment", index_together={("state_ready", "state_locked_until", "state")}, ), + migrations.AlterIndexTogether( + name="postinteraction", + index_together={ + ("type", "identity", "post"), + ("state_ready", "state_locked_until", "state"), + }, + ), ] diff --git a/activities/models/emoji.py b/activities/models/emoji.py index 73fff34..15691dd 100644 --- a/activities/models/emoji.py +++ b/activities/models/emoji.py @@ -123,6 +123,7 @@ class Emoji(StatorModel): class Meta: unique_together = ("domain", "shortcode") + index_together = StatorModel.Meta.index_together class urls(urlman.Urls): admin = "/admin/emoji/" diff --git a/activities/models/post.py b/activities/models/post.py index b3e22a0..482aea4 100644 --- a/activities/models/post.py +++ b/activities/models/post.py @@ -319,6 +319,7 @@ class Post(StatorModel): name="ix_post_local_public_created", ), ] + index_together = StatorModel.Meta.index_together class urls(urlman.Urls): view = "{self.author.urls.view}posts/{self.id}/" diff --git a/activities/models/post_interaction.py b/activities/models/post_interaction.py index 2004561..eeeff55 100644 --- a/activities/models/post_interaction.py +++ b/activities/models/post_interaction.py @@ -162,7 +162,9 @@ class PostInteraction(StatorModel): updated = models.DateTimeField(auto_now=True) class Meta: - index_together = [["type", "identity", "post"]] + index_together = [ + ["type", "identity", "post"] + ] + StatorModel.Meta.index_together ### Display helpers ### diff --git a/stator/models.py b/stator/models.py index 4d20574..101a4ff 100644 --- a/stator/models.py +++ b/stator/models.py @@ -84,7 +84,7 @@ class StatorModel(models.Model): state: StateField # If this row is up for transition attempts (which it always is on creation!) - state_ready = models.BooleanField(default=True, db_index=True) + state_ready = models.BooleanField(default=True) # When the state last actually changed, or the date of instance creation state_changed = models.DateTimeField(auto_now_add=True) @@ -102,7 +102,7 @@ class StatorModel(models.Model): class Meta: abstract = True - index_together = ["state_ready", "state_locked_until", "state"] + index_together = [("state_ready", "state_locked_until", "state")] # Need this empty indexes to ensure child Models have a Meta.indexes # that will look to add indexes (that we inject with class_prepared) indexes: list = [] diff --git a/users/migrations/0013_stator_indexes.py b/users/migrations/0013_stator_indexes.py index 0cc900b..91ec5e5 100644 --- a/users/migrations/0013_stator_indexes.py +++ b/users/migrations/0013_stator_indexes.py @@ -1,6 +1,6 @@ -# Generated by Django 4.1.4 on 2023-02-04 01:05 +# Generated by Django 4.1.4 on 2023-02-04 05:23 -from django.db import migrations, models +from django.db import migrations class Migration(migrations.Migration): @@ -10,45 +10,22 @@ class Migration(migrations.Migration): ] operations = [ - migrations.AlterField( - model_name="block", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="domain", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="follow", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="identity", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="inboxmessage", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="passwordreset", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), - ), - migrations.AlterField( - model_name="report", - name="state_ready", - field=models.BooleanField(db_index=True, default=True), + migrations.AlterIndexTogether( + name="block", + index_together={("state_ready", "state_locked_until", "state")}, ), migrations.AlterIndexTogether( name="domain", index_together={("state_ready", "state_locked_until", "state")}, ), + migrations.AlterIndexTogether( + name="follow", + index_together={("state_ready", "state_locked_until", "state")}, + ), + migrations.AlterIndexTogether( + name="identity", + index_together={("state_ready", "state_locked_until", "state")}, + ), migrations.AlterIndexTogether( name="inboxmessage", index_together={("state_ready", "state_locked_until", "state")}, diff --git a/users/models/block.py b/users/models/block.py index 2391f54..f941316 100644 --- a/users/models/block.py +++ b/users/models/block.py @@ -136,6 +136,7 @@ class Block(StatorModel): class Meta: unique_together = [("source", "target", "mute")] + index_together = StatorModel.Meta.index_together def __str__(self): return f"#{self.id}: {self.source} blocks {self.target}" diff --git a/users/models/follow.py b/users/models/follow.py index d5982c5..4fb692a 100644 --- a/users/models/follow.py +++ b/users/models/follow.py @@ -146,6 +146,7 @@ class Follow(StatorModel): class Meta: unique_together = [("source", "target")] + index_together = StatorModel.Meta.index_together def __str__(self): return f"#{self.id}: {self.source} → {self.target}" diff --git a/users/models/identity.py b/users/models/identity.py index 3050b06..ddbd956 100644 --- a/users/models/identity.py +++ b/users/models/identity.py @@ -227,6 +227,7 @@ class Identity(StatorModel): class Meta: verbose_name_plural = "identities" unique_together = [("username", "domain")] + index_together = StatorModel.Meta.index_together class urls(urlman.Urls): view = "/@{self.username}@{self.domain_id}/"