Skip to content

Commit

Permalink
Merge pull request #69 from openstate/chore/fix-n-plus-one-query
Browse files Browse the repository at this point in the history
Optimize n+1 query
  • Loading branch information
siccovansas authored Oct 2, 2023
2 parents da37174 + 139d5e8 commit 686524a
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
9 changes: 5 additions & 4 deletions app/api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
from datetime import datetime
from typing import Union

from app.models import Person, ProfessionalDetail, Verdict
from app.models import Person, Verdict


def serialize_dt(dt: datetime) -> Union[str, None]:
return dt.isoformat() if dt else None


def person_list_serializer(person: Person):
professional_details = ProfessionalDetail.query.filter(
ProfessionalDetail.person_id == person.id
).filter(ProfessionalDetail.end_date.is_(None))
# only show professional details that are still active
professional_details = [
detail for detail in person.professional_detail if detail.end_date is not None
]
return {
"id": person.id,
"titles": person.titles,
Expand Down
5 changes: 3 additions & 2 deletions app/api/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ class PersonService(BaseService):
def __init__(self, query_params=MultiDict[str, str]):
super().__init__(query_params)
self.query_params = query_params
self.queryset = Person.query.filter(Person.protected.isnot(True))
self.queryset = Person.query.filter(Person.protected.isnot(True)).options(
joinedload(Person.professional_detail)
)
self.order = [Person.last_name.asc(), Person.id.asc()]

def apply_filtering(self):
Expand All @@ -58,7 +60,6 @@ def apply_filtering(self):
include_former_judges = self.query_params.get(
"former_judges", default=False, type=lambda v: v.lower() == "true"
)
print(include_former_judges, type(include_former_judges), flush=True)
if include_former_judges is False:
self.queryset = self.queryset.filter(
Person.removed_from_rechtspraak_at.is_(None)
Expand Down

0 comments on commit 686524a

Please sign in to comment.