from typing import List from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.db.session import get_db from app.models.website import WebsiteAlert from app.api.schemas import AlertResponse router = APIRouter(prefix="/alerts", tags=["alerts"]) @router.get("/", response_model=List[AlertResponse]) def list_alerts(skip: int = 0, limit: int = 100, unread_only: bool = False, db: Session = Depends(get_db)): query = db.query(WebsiteAlert) if unread_only: query = query.filter(not WebsiteAlert.is_read) alerts = query.order_by(WebsiteAlert.detected_at.desc()).offset(skip).limit(limit).all() return alerts @router.put("/{alert_id}/mark-read") def mark_alert_read(alert_id: int, db: Session = Depends(get_db)): alert = db.query(WebsiteAlert).filter(WebsiteAlert.id == alert_id).first() if alert is None: raise HTTPException(status_code=404, detail="Alert not found") alert.is_read = True db.commit() return {"message": "Alert marked as read"}