Skip to content

Commit

Permalink
perf: select_related and prefetch_related in transactions APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
iloveagent57 committed Oct 25, 2023
1 parent 31fb43b commit 9a7e56b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
13 changes: 12 additions & 1 deletion enterprise_subsidy/apps/api/v1/views/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,18 @@ def base_queryset(self):
#
# Finally, overlay both `user_id`-based and request-parameter-based filters in to one big happy queryset.
#
return queryset.filter(**request_based_kwargs).order_by("uuid")
return queryset.filter(
**request_based_kwargs,
).select_related(
"ledger",
"ledger__subsidy",
"reversal",
).prefetch_related(
"external_reference",
"external_reference__external_fulfillment_provider",
).order_by(
"uuid",
)

def retrieve(self, request, *args, **kwargs): # pylint: disable=useless-parent-delegation
"""
Expand Down
6 changes: 5 additions & 1 deletion enterprise_subsidy/apps/api/v2/views/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,15 @@ def subsidy(self):
def get_queryset(self):
"""
A base queryset that selects all transaction records (along with their
associated ledger and subsidy) for the requested ``subsidy_uuid``.
associated ledger, subsidy, reversals, and external references) for the requested ``subsidy_uuid``.
"""
return Transaction.objects.select_related(
'ledger',
'ledger__subsidy',
'reversal',
).prefetch_related(
'external_reference',
'external_reference__external_fulfillment_provider',
).filter(
ledger__subsidy=self.subsidy
)
Expand Down

0 comments on commit 9a7e56b

Please sign in to comment.