Files
web-app-python/app/schemas/allarme.py
2025-10-20 19:10:08 +02:00

57 lines
1.5 KiB
Python

from datetime import datetime
from typing import Optional, Dict, Any
from pydantic import BaseModel, Field
from app.models.allarme import SeveritaAllarme, StatoAllarme, TipoAllarme
class AllarmeBase(BaseModel):
"""Schema base per allarmi"""
tipo: TipoAllarme
severita: SeveritaAllarme
titolo: str = Field(..., max_length=255)
descrizione: Optional[str] = None
messaggio: Optional[str] = None
valore_rilevato: Optional[float] = None
valore_soglia: Optional[float] = None
unita_misura: Optional[str] = Field(None, max_length=20)
dati_sensori: Optional[Dict[str, Any]] = None
class AllarmeCreate(AllarmeBase):
"""Schema per creazione allarme"""
sito_id: int
timestamp_rilevamento: datetime
class AllarmeUpdate(BaseModel):
"""Schema per aggiornamento allarme"""
stato: Optional[StatoAllarme] = None
note: Optional[str] = None
risolto_da: Optional[str] = None
class AllarmeResponse(AllarmeBase):
"""Schema per risposta API con allarme"""
id: int
sito_id: int
stato: StatoAllarme
timestamp_rilevamento: datetime
timestamp_notifica: Optional[datetime] = None
created_at: datetime
updated_at: Optional[datetime] = None
note: Optional[str] = None
risolto_da: Optional[str] = None
timestamp_risoluzione: Optional[datetime] = None
class Config:
from_attributes = True
class AllarmeList(BaseModel):
"""Schema per lista paginata di allarmi"""
total: int
items: list[AllarmeResponse]
page: int
page_size: int