Use django-auto-prefetch

This commit is contained in:
2024-07-01 19:47:15 +02:00
parent 40587fa24f
commit 80ea0de983
3 changed files with 190 additions and 14 deletions

View File

@ -0,0 +1,171 @@
# Generated by Django 5.0.6 on 2024-07-01 15:44
import auto_prefetch
import django.db.models.deletion
import django.db.models.manager
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("twitch_app", "0005_alter_dropbenefit_options_alter_dropcampaign_options_and_more"),
]
operations = [
migrations.AlterModelOptions(
name="dropbenefit",
options={
"base_manager_name": "prefetch_manager",
"ordering": ("name",),
"verbose_name": "Drop Benefit",
"verbose_name_plural": "Drop Benefits",
},
),
migrations.AlterModelOptions(
name="dropcampaign",
options={
"base_manager_name": "prefetch_manager",
"ordering": ("name",),
"verbose_name": "Drop Campaign",
"verbose_name_plural": "Drop Campaigns",
},
),
migrations.AlterModelOptions(
name="game",
options={
"base_manager_name": "prefetch_manager",
"ordering": ("display_name",),
"verbose_name": "Game",
"verbose_name_plural": "Games",
},
),
migrations.AlterModelOptions(
name="organization",
options={
"base_manager_name": "prefetch_manager",
"ordering": ("name",),
"verbose_name": "Organization",
"verbose_name_plural": "Organizations",
},
),
migrations.AlterModelOptions(
name="timebaseddrop",
options={
"base_manager_name": "prefetch_manager",
"ordering": ("name",),
"verbose_name": "Time-Based Drop",
"verbose_name_plural": "Time-Based Drops",
},
),
migrations.AlterModelManagers(
name="dropbenefit",
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="timebaseddrop",
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AlterField(
model_name="dropbenefit",
name="game",
field=auto_prefetch.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="twitch_app.game"),
),
migrations.AlterField(
model_name="dropbenefit",
name="owner_organization",
field=auto_prefetch.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="twitch_app.organization"),
),
migrations.AlterField(
model_name="dropcampaign",
name="game",
field=auto_prefetch.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="drop_campaigns",
to="twitch_app.game",
),
),
migrations.AlterField(
model_name="dropcampaign",
name="owner",
field=auto_prefetch.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="drop_campaigns",
to="twitch_app.organization",
),
),
migrations.AlterField(
model_name="historicaldropbenefit",
name="game",
field=auto_prefetch.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="twitch_app.game",
),
),
migrations.AlterField(
model_name="historicaldropbenefit",
name="owner_organization",
field=auto_prefetch.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="twitch_app.organization",
),
),
migrations.AlterField(
model_name="historicaldropcampaign",
name="game",
field=auto_prefetch.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="twitch_app.game",
),
),
migrations.AlterField(
model_name="historicaldropcampaign",
name="owner",
field=auto_prefetch.ForeignKey(
blank=True,
db_constraint=False,
null=True,
on_delete=django.db.models.deletion.DO_NOTHING,
related_name="+",
to="twitch_app.organization",
),
),
]

View File

@ -1,3 +1,4 @@
import auto_prefetch
from django.contrib.humanize.templatetags.humanize import naturaltime
from django.db import models
from django.db.models import Value
@ -8,13 +9,13 @@ from django.utils import timezone
from simple_history.models import HistoricalRecords
class Organization(models.Model):
class Organization(auto_prefetch.Model):
id = models.TextField(primary_key=True)
name = models.TextField(blank=True, null=True)
added_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Organization"
verbose_name_plural = "Organizations"
ordering = ("name",)
@ -23,7 +24,7 @@ class Organization(models.Model):
return self.name or self.id
class Game(models.Model):
class Game(auto_prefetch.Model):
id = models.TextField(primary_key=True)
slug = models.TextField(blank=True, null=True)
twitch_url = models.GeneratedField( # type: ignore # noqa: PGH003
@ -45,7 +46,7 @@ class Game(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Game"
verbose_name_plural = "Games"
ordering = ("display_name",)
@ -54,20 +55,23 @@ class Game(models.Model):
return self.display_name or self.slug or self.id
class DropBenefit(models.Model):
class DropBenefit(auto_prefetch.Model):
id = models.TextField(primary_key=True)
created_at = models.DateTimeField(blank=True, null=True)
entitlement_limit = models.IntegerField(blank=True, null=True)
image_asset_url = models.URLField(blank=True, null=True)
is_ios_available = models.BooleanField(blank=True, null=True)
name = models.TextField(blank=True, null=True)
owner_organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
game = models.ForeignKey(Game, on_delete=models.CASCADE)
owner_organization = auto_prefetch.ForeignKey(
Organization,
on_delete=models.CASCADE,
)
game = auto_prefetch.ForeignKey(Game, on_delete=models.CASCADE)
added_at = models.DateTimeField(blank=True, null=True, auto_now_add=True)
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Drop Benefit"
verbose_name_plural = "Drop Benefits"
ordering = ("name",)
@ -76,7 +80,7 @@ class DropBenefit(models.Model):
return f"{self.owner_organization.name} - {self.game.display_name} - {self.name}"
class TimeBasedDrop(models.Model):
class TimeBasedDrop(auto_prefetch.Model):
id = models.TextField(primary_key=True)
required_subs = models.IntegerField(blank=True, null=True)
end_at = models.DateTimeField(blank=True, null=True)
@ -88,7 +92,7 @@ class TimeBasedDrop(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Time-Based Drop"
verbose_name_plural = "Time-Based Drops"
ordering = ("name",)
@ -101,7 +105,7 @@ class TimeBasedDrop(models.Model):
return f"{self.benefits.first()} - {self.name}"
class DropCampaign(models.Model):
class DropCampaign(auto_prefetch.Model):
id = models.TextField(primary_key=True)
account_link_url = models.URLField(blank=True, null=True)
description = models.TextField(blank=True, null=True)
@ -111,12 +115,12 @@ class DropCampaign(models.Model):
name = models.TextField(blank=True, null=True)
start_at = models.DateTimeField(blank=True, null=True)
status = models.TextField(blank=True, null=True)
game = models.ForeignKey(
game = auto_prefetch.ForeignKey(
Game,
on_delete=models.CASCADE,
related_name="drop_campaigns",
)
owner = models.ForeignKey(
owner = auto_prefetch.ForeignKey(
Organization,
on_delete=models.CASCADE,
related_name="drop_campaigns",
@ -126,7 +130,7 @@ class DropCampaign(models.Model):
modified_at = models.DateTimeField(blank=True, null=True, auto_now=True)
history = HistoricalRecords()
class Meta:
class Meta(auto_prefetch.Model.Meta):
verbose_name = "Drop Campaign"
verbose_name_plural = "Drop Campaigns"
ordering = ("name",)