From ad2bdef3d8736c3abb053cb070ede5ca11bba181 Mon Sep 17 00:00:00 2001 From: James Pattinson Date: Tue, 21 Oct 2025 17:45:32 +0000 Subject: [PATCH] Implement PATCH for pprs --- backend/app/api/endpoints/pprs.py | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/backend/app/api/endpoints/pprs.py b/backend/app/api/endpoints/pprs.py index 7dd434d..8255d13 100644 --- a/backend/app/api/endpoints/pprs.py +++ b/backend/app/api/endpoints/pprs.py @@ -101,6 +101,39 @@ async def update_ppr( return ppr +@router.patch("/{ppr_id}", response_model=PPR) +async def patch_ppr( + request: Request, + ppr_id: int, + ppr_in: PPRUpdate, + db: Session = Depends(get_db), + current_user: User = Depends(get_current_active_user) +): + """Partially update a PPR record (only provided fields will be updated)""" + db_ppr = crud_ppr.get(db, ppr_id=ppr_id) + if not db_ppr: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="PPR record not found" + ) + + # For PATCH, we only update fields that are explicitly provided (not None) + ppr = crud_ppr.update(db, db_obj=db_ppr, obj_in=ppr_in) + + # Send real-time update + if hasattr(request.app.state, 'connection_manager'): + await request.app.state.connection_manager.broadcast({ + "type": "ppr_updated", + "data": { + "id": ppr.id, + "ac_reg": ppr.ac_reg, + "status": ppr.status.value + } + }) + + return ppr + + @router.patch("/{ppr_id}/status", response_model=PPR) async def update_ppr_status( request: Request,