Refactor models to use auto_prefetch for improved performance and update dependencies in pyproject.toml

This commit is contained in:
Joakim Hellsén 2026-02-09 20:13:47 +01:00
commit 4e67e7299d
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk
4 changed files with 261 additions and 30 deletions

View file

@ -0,0 +1,137 @@
# Generated by Django 6.0.2 on 2026-02-09 19:04
from __future__ import annotations
import django.db.models.manager
from django.db import migrations
class Migration(migrations.Migration):
"Alter model options to use prefetch_manager as the base manager and set default ordering for better performance and consistent query results." # noqa: E501
dependencies = [
("twitch", "0007_rename_operation_name_to_operation_names"),
]
operations = [
migrations.AlterModelOptions(
name="channel",
options={"base_manager_name": "prefetch_manager", "ordering": ["display_name"]},
),
migrations.AlterModelOptions(
name="chatbadge",
options={"base_manager_name": "prefetch_manager", "ordering": ["badge_set", "badge_id"]},
),
migrations.AlterModelOptions(
name="chatbadgeset",
options={"base_manager_name": "prefetch_manager", "ordering": ["set_id"]},
),
migrations.AlterModelOptions(
name="dropbenefit",
options={"base_manager_name": "prefetch_manager", "ordering": ["-created_at"]},
),
migrations.AlterModelOptions(
name="dropbenefitedge",
options={"base_manager_name": "prefetch_manager"},
),
migrations.AlterModelOptions(
name="dropcampaign",
options={"base_manager_name": "prefetch_manager", "ordering": ["-start_at"]},
),
migrations.AlterModelOptions(
name="game",
options={"base_manager_name": "prefetch_manager", "ordering": ["display_name"]},
),
migrations.AlterModelOptions(
name="organization",
options={"base_manager_name": "prefetch_manager", "ordering": ["name"]},
),
migrations.AlterModelOptions(
name="rewardcampaign",
options={"base_manager_name": "prefetch_manager", "ordering": ["-starts_at"]},
),
migrations.AlterModelOptions(
name="timebaseddrop",
options={"base_manager_name": "prefetch_manager", "ordering": ["start_at"]},
),
migrations.AlterModelOptions(
name="twitchgamedata",
options={"base_manager_name": "prefetch_manager", "ordering": ["name"]},
),
migrations.AlterModelManagers(
name="channel",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="chatbadge",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="chatbadgeset",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="dropbenefit",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="dropbenefitedge",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="dropcampaign",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="game",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="organization",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="rewardcampaign",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="timebaseddrop",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterModelManagers(
name="twitchgamedata",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
]

View file

@ -0,0 +1,92 @@
# Generated by Django 6.0.2 on 2026-02-09 19:05
from __future__ import annotations
import auto_prefetch
import django.db.models.deletion
from django.db import migrations
class Migration(migrations.Migration):
"Alter ChatBadge.badge_set to use auto_prefetch.ForeignKey and update related fields to use auto_prefetch.ForeignKey as well for better performance." # noqa: E501
dependencies = [
("twitch", "0008_alter_channel_options_alter_chatbadge_options_and_more"),
]
operations = [
migrations.AlterField(
model_name="chatbadge",
name="badge_set",
field=auto_prefetch.ForeignKey(
help_text="The badge set this badge belongs to.",
on_delete=django.db.models.deletion.CASCADE,
related_name="badges",
to="twitch.chatbadgeset",
verbose_name="Badge Set",
),
),
migrations.AlterField(
model_name="dropbenefitedge",
name="benefit",
field=auto_prefetch.ForeignKey(
help_text="The benefit in this relationship.",
on_delete=django.db.models.deletion.CASCADE,
to="twitch.dropbenefit",
),
),
migrations.AlterField(
model_name="dropbenefitedge",
name="drop",
field=auto_prefetch.ForeignKey(
help_text="The time-based drop in this relationship.",
on_delete=django.db.models.deletion.CASCADE,
to="twitch.timebaseddrop",
),
),
migrations.AlterField(
model_name="dropcampaign",
name="game",
field=auto_prefetch.ForeignKey(
help_text="Game associated with this campaign.",
on_delete=django.db.models.deletion.CASCADE,
related_name="drop_campaigns",
to="twitch.game",
verbose_name="Game",
),
),
migrations.AlterField(
model_name="rewardcampaign",
name="game",
field=auto_prefetch.ForeignKey(
blank=True,
help_text="Game associated with this reward campaign (if any).",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="reward_campaigns",
to="twitch.game",
),
),
migrations.AlterField(
model_name="timebaseddrop",
name="campaign",
field=auto_prefetch.ForeignKey(
help_text="The campaign this drop belongs to.",
on_delete=django.db.models.deletion.CASCADE,
related_name="time_based_drops",
to="twitch.dropcampaign",
),
),
migrations.AlterField(
model_name="twitchgamedata",
name="game",
field=auto_prefetch.ForeignKey(
blank=True,
help_text="Optional link to the local Game record for this Twitch game.",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="twitch_game_data",
to="twitch.game",
verbose_name="Game",
),
),
]