diff --git a/backend/app/api/v1/alerts.py b/backend/app/api/v1/alerts.py new file mode 100644 index 0000000..57463b5 --- /dev/null +++ b/backend/app/api/v1/alerts.py @@ -0,0 +1,40 @@ +"""Alert endpoints.""" +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from typing import List, Optional +from app.database import get_db +from app.schemas.alert import AlertResponse +from app.services.alert_service import AlertService +from app.api.deps import get_current_user +from app.models.user import User + +router = APIRouter(prefix="/alerts") + + +@router.get("", response_model=List[AlertResponse]) +def list_alerts( + is_read: Optional[bool] = None, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + return AlertService.list_alerts(db, user.tenant_id, is_read) + + +@router.get("/unread-count") +def unread_count( + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + return {"count": AlertService.unread_count(db, user.tenant_id)} + + +@router.put("/{alert_id}/read", response_model=AlertResponse) +def mark_read( + alert_id: int, + user: User = Depends(get_current_user), + db: Session = Depends(get_db), +): + alert = AlertService.mark_read(db, user.tenant_id, alert_id) + if not alert: + raise HTTPException(status_code=404, detail="Alert not found") + return alert