From 84d706ef13b766db6a112829e69483d57853a69e Mon Sep 17 00:00:00 2001 From: kraysent Date: Mon, 23 Feb 2026 19:24:40 +0000 Subject: [PATCH] fix pagination for the crossmatch list handler --- app/data/repositories/layer0/records.py | 6 +++++- app/data/repositories/layer0/repository.py | 5 ++++- app/domain/adminapi/crossmatch.py | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/data/repositories/layer0/records.py b/app/data/repositories/layer0/records.py index b532a73e..49bb716c 100644 --- a/app/data/repositories/layer0/records.py +++ b/app/data/repositories/layer0/records.py @@ -38,6 +38,7 @@ def get_processed_records( self, limit: int, offset: str | None = None, + row_offset: int | None = None, table_name: str | None = None, status: Sequence[enums.RecordCrossmatchStatus] | None = None, triage_status: Sequence[enums.RecordTriageStatus] | None = None, @@ -83,9 +84,12 @@ def get_processed_records( {where_clause} ORDER BY o.id LIMIT %s""" - params.append(limit) + if row_offset is not None: + query += " OFFSET %s" + params.append(row_offset) + rows = self._storage.query(query, params=params) records = [] diff --git a/app/data/repositories/layer0/repository.py b/app/data/repositories/layer0/repository.py index a719d6f9..b74dd391 100644 --- a/app/data/repositories/layer0/repository.py +++ b/app/data/repositories/layer0/repository.py @@ -76,12 +76,15 @@ def get_processed_records( self, limit: int, offset: str | None = None, + row_offset: int | None = None, table_name: str | None = None, status: Sequence[enums.RecordCrossmatchStatus] | None = None, triage_status: Sequence[enums.RecordTriageStatus] | None = None, record_id: str | None = None, ) -> list[model.RecordCrossmatch]: - return self.records_repo.get_processed_records(limit, offset, table_name, status, triage_status, record_id) + return self.records_repo.get_processed_records( + limit, offset, row_offset, table_name, status, triage_status, record_id + ) def add_crossmatch_result(self, data: dict[str, model.CIResult]) -> None: return self.records_repo.add_crossmatch_result(data) diff --git a/app/domain/adminapi/crossmatch.py b/app/domain/adminapi/crossmatch.py index 23678dae..531bc247 100644 --- a/app/domain/adminapi/crossmatch.py +++ b/app/domain/adminapi/crossmatch.py @@ -78,12 +78,12 @@ def __init__( self.layer2_repo = layer2_repo def get_crossmatch_records(self, r: adminapi.GetRecordsCrossmatchRequest) -> adminapi.GetRecordsCrossmatchResponse: - offset = r.page * r.page_size + row_offset = r.page * r.page_size processed_objects = self.layer0_repo.get_processed_records( table_name=r.table_name, limit=r.page_size, - offset=str(offset) if offset > 0 else None, + row_offset=row_offset if row_offset > 0 else None, status=[r.status] if r.status is not None else None, triage_status=[r.triage_status] if r.triage_status is not None else None, )