From 2fedd998361e9ea7e46647c0bf893bffa3b311a9 Mon Sep 17 00:00:00 2001 From: kencx Date: Tue, 20 Jun 2023 22:26:45 +0800 Subject: [PATCH] Refactor to use count() --- tildes/tildes/models/pagination.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tildes/tildes/models/pagination.py b/tildes/tildes/models/pagination.py index 1462519..c1353fd 100644 --- a/tildes/tildes/models/pagination.py +++ b/tildes/tildes/models/pagination.py @@ -112,7 +112,7 @@ class PaginatedQuery(ModelQuery): return self - def remove_before_after(self): + def remove_before_after(self) -> PaginatedQuery: """Remove all before or after restrictions from query""" self.before_id = None self.after_id = None @@ -237,7 +237,11 @@ class PaginatedResults: self.has_prev_page = False # fetch total number of results without pagination - self.total_count = len(query.remove_before_after().all()) + self.total_count = ( + query.request.db_session.query(func.count()) + .select_from(query.remove_before_after().statement) + .scalar() + ) def __iter__(self) -> Iterator[Any]: """Iterate over the results."""