"""Alert model.""" from datetime import datetime from typing import Any, Optional from pydantic import BaseModel, ConfigDict class Alert(BaseModel): """Pydantic model for alerts table.""" model_config = ConfigDict(from_attributes=True) id: Optional[str] = None watchlist_id: str strategy_id: Optional[str] = None ticker: Optional[str] = None type: str # strategy_trigger, sec_filing, sentiment, rotation, price trigger_type: Optional[str] = None message: str severity: str = "info" # info, warning, critical status: str = "active" # active, resolved, dismissed triggered_at: Optional[datetime] = None resolved_at: Optional[datetime] = None metadata: Optional[dict] = None created_at: Optional[datetime] = None def to_dict(self) -> dict: return { "id": self.id, "watchlistId": self.watchlist_id, "strategyId": self.strategy_id, "ticker": self.ticker, "type": self.type, "triggerType": self.trigger_type, "message": self.message, "severity": self.severity, "status": self.status, "triggeredAt": self.triggered_at.isoformat() if self.triggered_at else None, "resolvedAt": self.resolved_at.isoformat() if self.resolved_at else None, "metadata": self.metadata, }