From a82fcf47dd72f5cafac1ad66450246e8ee08c8d0 Mon Sep 17 00:00:00 2001 From: Max Chis Date: Tue, 2 Dec 2025 14:08:38 -0500 Subject: [PATCH] Add pagination for agency search --- src/api/endpoints/search/agency/query.py | 4 +++- src/api/endpoints/search/routes.py | 7 ++++++- .../integration/api/search/agency/test_search.py | 10 ++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/api/endpoints/search/agency/query.py b/src/api/endpoints/search/agency/query.py index 254d90f5..5e36e9a5 100644 --- a/src/api/endpoints/search/agency/query.py +++ b/src/api/endpoints/search/agency/query.py @@ -20,11 +20,13 @@ def __init__( location_id: int | None, query: str | None, jurisdiction_type: JurisdictionType | None, + page: int ): super().__init__() self.location_id = location_id self.query = query self.jurisdiction_type = jurisdiction_type + self.page = page async def run(self, session: AsyncSession) -> list[AgencySearchResponse]: @@ -68,7 +70,7 @@ async def run(self, session: AsyncSession) -> list[AgencySearchResponse]: ).desc() ) - query = query.limit(50) + query = query.limit(10).offset((self.page - 1) * 10) mappings: Sequence[RowMapping] = await sh.mappings(session, query) diff --git a/src/api/endpoints/search/routes.py b/src/api/endpoints/search/routes.py index dfbeeacd..58b661e8 100644 --- a/src/api/endpoints/search/routes.py +++ b/src/api/endpoints/search/routes.py @@ -40,6 +40,10 @@ async def search_agency( description="The jurisdiction type to search for", default=None ), + page: int = Query( + description="The page to search for", + default=1 + ), access_info: AccessInfo = Depends(get_access_info), async_core: AsyncCore = Depends(get_async_core), ) -> list[AgencySearchResponse]: @@ -53,6 +57,7 @@ async def search_agency( SearchAgencyQueryBuilder( location_id=location_id, query=query, - jurisdiction_type=jurisdiction_type + jurisdiction_type=jurisdiction_type, + page=page ) ) \ No newline at end of file diff --git a/tests/automated/integration/api/search/agency/test_search.py b/tests/automated/integration/api/search/agency/test_search.py index cc3fee19..f207b3ae 100644 --- a/tests/automated/integration/api/search/agency/test_search.py +++ b/tests/automated/integration/api/search/agency/test_search.py @@ -61,3 +61,13 @@ async def test_search_agency( } ) assert len(responses) == 3 + + # Test pagination + responses = api_test_helper.request_validator.get_v2( + url="/search/agency", + params={ + "query": "A Agency", + "location_id": allegheny_county.location_id, + "page": 2 + } + )