Refactor database models to majorly increase queries needed and decrease load times of home from 30 secs to 5 sec (we will be caching the rest to decrease even further via background tasks)
This commit is contained in:
parent
f7a9b2f823
commit
86c7eba10a
25 changed files with 1941 additions and 1560 deletions
|
|
@ -7,30 +7,18 @@ from accounts.models import FriendCode
|
|||
class TradeOfferManager(models.Manager):
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset().select_related("initiated_by", "initiated_by__user", "rarity")
|
||||
queryset = queryset.prefetch_related(
|
||||
Prefetch(
|
||||
"trade_offer_want_cards",
|
||||
queryset=TradeOfferWantCard.objects.select_related("card").prefetch_related('card__decks').annotate(
|
||||
total_quantity=Sum("quantity"),
|
||||
total_accepted=Sum("qty_accepted")
|
||||
).order_by("total_quantity", "id")
|
||||
),
|
||||
Prefetch(
|
||||
"trade_offer_have_cards",
|
||||
queryset=TradeOfferHaveCard.objects.select_related("card").prefetch_related('card__decks').annotate(
|
||||
total_quantity=Sum("quantity"),
|
||||
total_accepted=Sum("qty_accepted")
|
||||
).order_by("total_quantity", "id")
|
||||
),
|
||||
Prefetch(
|
||||
"acceptances",
|
||||
queryset=TradeAcceptance.objects.select_related("accepted_by", "accepted_by__user", "requested_card", "offered_card")
|
||||
),
|
||||
queryset = super().get_queryset().select_related(
|
||||
"initiated_by__user",
|
||||
).prefetch_related(
|
||||
"trade_offer_have_cards__card",
|
||||
"trade_offer_want_cards__card",
|
||||
"acceptances",
|
||||
"acceptances__requested_card",
|
||||
"acceptances__offered_card",
|
||||
"acceptances__accepted_by__user",
|
||||
).order_by("-updated_at")
|
||||
return queryset
|
||||
|
||||
|
||||
class TradeOffer(models.Model):
|
||||
objects = TradeOfferManager()
|
||||
|
||||
|
|
@ -42,14 +30,8 @@ class TradeOffer(models.Model):
|
|||
on_delete=models.PROTECT,
|
||||
related_name='initiated_trade_offers'
|
||||
)
|
||||
rarity = models.ForeignKey(
|
||||
"cards.Rarity",
|
||||
on_delete=models.PROTECT,
|
||||
null=True,
|
||||
blank=True,
|
||||
editable=False,
|
||||
db_index=True
|
||||
)
|
||||
rarity_icon = models.CharField(max_length=8, null=True)
|
||||
rarity_level = models.IntegerField(null=True)
|
||||
want_cards = models.ManyToManyField(
|
||||
"cards.Card",
|
||||
related_name='trade_offers_want',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue