mirror of
https://github.com/jointakahe/takahe.git
synced 2024-11-25 16:51:00 +00:00
Move from index_together to indexes
This commit is contained in:
parent
46679a5c73
commit
888f4ad36c
10 changed files with 202 additions and 25 deletions
92
activities/migrations/0016_index_together_migration.py
Normal file
92
activities/migrations/0016_index_together_migration.py
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
# Generated by Django 4.2.1 on 2023-05-13 17:29
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("activities", "0015_alter_postinteraction_type"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="emoji",
|
||||||
|
new_name="activities__state_r_aa72ec_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="fanout",
|
||||||
|
new_name="activities__state_r_aae3b4_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="hashtag",
|
||||||
|
new_name="activities__state_r_5703be_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="post",
|
||||||
|
new_name="activities__state_r_b8f1ff_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="postattachment",
|
||||||
|
new_name="activities__state_r_4e981c_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="postinteraction",
|
||||||
|
new_name="activities__state_r_981d8c_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="postinteraction",
|
||||||
|
new_name="activities__type_75d2e4_idx",
|
||||||
|
old_fields=("type", "identity", "post"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="timelineevent",
|
||||||
|
new_name="activities__identit_0b93c3_idx",
|
||||||
|
old_fields=("identity", "type", "subject_post", "subject_identity"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="timelineevent",
|
||||||
|
new_name="activities__identit_cc2290_idx",
|
||||||
|
old_fields=("identity", "type", "subject_identity"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="timelineevent",
|
||||||
|
new_name="activities__identit_872fbb_idx",
|
||||||
|
old_fields=("identity", "created"),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="emoji",
|
||||||
|
index=models.Index(
|
||||||
|
fields=["state", "state_attempted"], name="ix_emoji_state_attempted"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="emoji",
|
||||||
|
index=models.Index(
|
||||||
|
condition=models.Q(("state_locked_until__isnull", False)),
|
||||||
|
fields=["state_locked_until", "state"],
|
||||||
|
name="ix_emoji_state_locked",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="postinteraction",
|
||||||
|
index=models.Index(
|
||||||
|
fields=["state", "state_attempted"],
|
||||||
|
name="ix_postinterac_state_attempted",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="postinteraction",
|
||||||
|
index=models.Index(
|
||||||
|
condition=models.Q(("state_locked_until__isnull", False)),
|
||||||
|
fields=["state_locked_until", "state"],
|
||||||
|
name="ix_postinterac_state_locked",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -86,7 +86,6 @@ class EmojiManager(models.Manager):
|
||||||
|
|
||||||
|
|
||||||
class Emoji(StatorModel):
|
class Emoji(StatorModel):
|
||||||
|
|
||||||
# Normalized Emoji without the ':'
|
# Normalized Emoji without the ':'
|
||||||
shortcode = models.SlugField(max_length=100, db_index=True)
|
shortcode = models.SlugField(max_length=100, db_index=True)
|
||||||
|
|
||||||
|
@ -128,7 +127,7 @@ class Emoji(StatorModel):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ("domain", "shortcode")
|
unique_together = ("domain", "shortcode")
|
||||||
index_together = StatorModel.Meta.index_together
|
indexes = StatorModel.Meta.indexes
|
||||||
|
|
||||||
class urls(urlman.Urls):
|
class urls(urlman.Urls):
|
||||||
admin = "/admin/emoji/"
|
admin = "/admin/emoji/"
|
||||||
|
|
|
@ -325,8 +325,7 @@ class Post(StatorModel):
|
||||||
fields=["visibility", "local", "created"],
|
fields=["visibility", "local", "created"],
|
||||||
name="ix_post_local_public_created",
|
name="ix_post_local_public_created",
|
||||||
),
|
),
|
||||||
]
|
] + StatorModel.Meta.indexes
|
||||||
index_together = StatorModel.Meta.index_together
|
|
||||||
|
|
||||||
class urls(urlman.Urls):
|
class urls(urlman.Urls):
|
||||||
view = "{self.author.urls.view}posts/{self.id}/"
|
view = "{self.author.urls.view}posts/{self.id}/"
|
||||||
|
|
|
@ -179,9 +179,9 @@ class PostInteraction(StatorModel):
|
||||||
updated = models.DateTimeField(auto_now=True)
|
updated = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
index_together = [
|
indexes = [
|
||||||
["type", "identity", "post"]
|
models.Index(fields=["type", "identity", "post"])
|
||||||
] + StatorModel.Meta.index_together
|
] + StatorModel.Meta.indexes
|
||||||
|
|
||||||
### Display helpers ###
|
### Display helpers ###
|
||||||
|
|
||||||
|
|
|
@ -59,11 +59,13 @@ class TimelineEvent(models.Model):
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
index_together = [
|
indexes = [
|
||||||
# This relies on a DB that can use left subsets of indexes
|
# This relies on a DB that can use left subsets of indexes
|
||||||
("identity", "type", "subject_post", "subject_identity"),
|
models.Index(
|
||||||
("identity", "type", "subject_identity"),
|
fields=["identity", "type", "subject_post", "subject_identity"]
|
||||||
("identity", "created"),
|
),
|
||||||
|
models.Index(fields=["identity", "type", "subject_identity"]),
|
||||||
|
models.Index(fields=["identity", "created"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
### Alternate constructors ###
|
### Alternate constructors ###
|
||||||
|
|
|
@ -102,10 +102,7 @@ class StatorModel(models.Model):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
index_together = [("state_ready", "state_locked_until", "state")]
|
indexes = [models.Index(fields=["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 = []
|
|
||||||
|
|
||||||
def __init_subclass__(cls) -> None:
|
def __init_subclass__(cls) -> None:
|
||||||
if cls is not StatorModel:
|
if cls is not StatorModel:
|
||||||
|
@ -194,13 +191,11 @@ class StatorModel(models.Model):
|
||||||
"""
|
"""
|
||||||
Returns how many instances are "queued"
|
Returns how many instances are "queued"
|
||||||
"""
|
"""
|
||||||
return await (
|
return await cls.objects.filter(
|
||||||
cls.objects.filter(
|
|
||||||
state_locked_until__isnull=True,
|
state_locked_until__isnull=True,
|
||||||
state_ready=True,
|
state_ready=True,
|
||||||
state__in=cls.state_graph.automatic_states,
|
state__in=cls.state_graph.automatic_states,
|
||||||
).acount()
|
).acount()
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def atransition_clean_locks(cls):
|
async def atransition_clean_locks(cls):
|
||||||
|
|
90
users/migrations/0018_index_together_migration.py
Normal file
90
users/migrations/0018_index_together_migration.py
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# Generated by Django 4.2.1 on 2023-05-13 17:29
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("users", "0017_identity_featured_collection_uri"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="block",
|
||||||
|
new_name="users_block_state_r_e016a2_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="domain",
|
||||||
|
new_name="users_domai_state_r_42b328_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="follow",
|
||||||
|
new_name="users_follo_state_r_d1dbc2_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="identity",
|
||||||
|
new_name="users_ident_state_r_6fdeee_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="inboxmessage",
|
||||||
|
new_name="users_inbox_state_r_00fce2_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="passwordreset",
|
||||||
|
new_name="users_passw_state_r_f54f10_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.RenameIndex(
|
||||||
|
model_name="report",
|
||||||
|
new_name="users_repor_state_r_345b80_idx",
|
||||||
|
old_fields=("state_ready", "state_locked_until", "state"),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="block",
|
||||||
|
index=models.Index(
|
||||||
|
fields=["state", "state_attempted"], name="ix_block_state_attempted"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="block",
|
||||||
|
index=models.Index(
|
||||||
|
condition=models.Q(("state_locked_until__isnull", False)),
|
||||||
|
fields=["state_locked_until", "state"],
|
||||||
|
name="ix_block_state_locked",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="follow",
|
||||||
|
index=models.Index(
|
||||||
|
fields=["state", "state_attempted"], name="ix_follow_state_attempted"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="follow",
|
||||||
|
index=models.Index(
|
||||||
|
condition=models.Q(("state_locked_until__isnull", False)),
|
||||||
|
fields=["state_locked_until", "state"],
|
||||||
|
name="ix_follow_state_locked",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="identity",
|
||||||
|
index=models.Index(
|
||||||
|
fields=["state", "state_attempted"], name="ix_identity_state_attempted"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddIndex(
|
||||||
|
model_name="identity",
|
||||||
|
index=models.Index(
|
||||||
|
condition=models.Q(("state_locked_until__isnull", False)),
|
||||||
|
fields=["state_locked_until", "state"],
|
||||||
|
name="ix_identity_state_locked",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -136,7 +136,7 @@ class Block(StatorModel):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = [("source", "target", "mute")]
|
unique_together = [("source", "target", "mute")]
|
||||||
index_together = StatorModel.Meta.index_together
|
indexes = StatorModel.Meta.indexes
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"#{self.id}: {self.source} blocks {self.target}"
|
return f"#{self.id}: {self.source} blocks {self.target}"
|
||||||
|
|
|
@ -146,7 +146,7 @@ class Follow(StatorModel):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = [("source", "target")]
|
unique_together = [("source", "target")]
|
||||||
index_together = StatorModel.Meta.index_together
|
indexes = StatorModel.Meta.indexes
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"#{self.id}: {self.source} → {self.target}"
|
return f"#{self.id}: {self.source} → {self.target}"
|
||||||
|
|
|
@ -227,7 +227,7 @@ class Identity(StatorModel):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name_plural = "identities"
|
verbose_name_plural = "identities"
|
||||||
unique_together = [("username", "domain")]
|
unique_together = [("username", "domain")]
|
||||||
index_together = StatorModel.Meta.index_together
|
indexes = StatorModel.Meta.indexes
|
||||||
|
|
||||||
class urls(urlman.Urls):
|
class urls(urlman.Urls):
|
||||||
view = "/@{self.username}@{self.domain_id}/"
|
view = "/@{self.username}@{self.domain_id}/"
|
||||||
|
|
Loading…
Reference in a new issue