From 5691650688a996a31f7bacd1e6b4448b1ba88b92 Mon Sep 17 00:00:00 2001 From: Taylor Date: Mon, 19 Aug 2024 09:03:53 -0500 Subject: [PATCH] feat: Add pagination to list_alerts_by_assigned_to_endpoint --- backend/app/incidents/routes/db_operations.py | 10 +++++++--- backend/app/incidents/services/db_operations.py | 7 +++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/app/incidents/routes/db_operations.py b/backend/app/incidents/routes/db_operations.py index 4ef354ca..9f059933 100644 --- a/backend/app/incidents/routes/db_operations.py +++ b/backend/app/incidents/routes/db_operations.py @@ -391,9 +391,13 @@ async def list_alerts_by_status_endpoint( return AlertOutResponse(alerts=await list_alert_by_status(status.value, db, page=page, page_size=page_size), success=True, message="Alerts retrieved successfully") @incidents_db_operations_router.get("/alerts/assigned-to/{assigned_to}", response_model=AlertOutResponse) -async def list_alerts_by_assigned_to_endpoint(assigned_to: str, db: AsyncSession = Depends(get_db)): - return AlertOutResponse(alerts=await list_alert_by_assigned_to(assigned_to, db), success=True, message="Alerts retrieved successfully") - +async def list_alerts_by_assigned_to_endpoint( + assigned_to: str, + page: int = Query(1, ge=1), + page_size: int = Query(25, ge=1), + db: AsyncSession = Depends(get_db) +): + return AlertOutResponse(alerts=await list_alert_by_assigned_to(assigned_to, db, page=page, page_size=page_size), success=True, message="Alerts retrieved successfully") @incidents_db_operations_router.get("/alerts/asset/{asset_name}", response_model=AlertOutResponse) async def list_alerts_by_asset_name_endpoint( diff --git a/backend/app/incidents/services/db_operations.py b/backend/app/incidents/services/db_operations.py index 2b2eeda3..0105281f 100644 --- a/backend/app/incidents/services/db_operations.py +++ b/backend/app/incidents/services/db_operations.py @@ -882,7 +882,8 @@ async def list_alerts_by_asset_name(asset_name: str, db: AsyncSession, page: int return alerts_out -async def list_alert_by_assigned_to(assigned_to: str, db: AsyncSession) -> List[AlertOut]: +async def list_alert_by_assigned_to(assigned_to: str, db: AsyncSession, page: int = 1, page_size: int = 25) -> List[AlertOut]: + offset = (page - 1) * page_size result = await db.execute( select(Alert) .where(Alert.assigned_to == assigned_to) @@ -891,7 +892,9 @@ async def list_alert_by_assigned_to(assigned_to: str, db: AsyncSession) -> List[ selectinload(Alert.assets), selectinload(Alert.cases), selectinload(Alert.tags).selectinload(AlertToTag.tag), - ), + ) + .offset(offset) + .limit(page_size) ) alerts = result.scalars().all() alerts_out = []