from datetime import datetime from typing import Optional from pydantic import BaseModel, IPvAnyAddress class DeviceCreate(BaseModel): name: str ip: str device_type: str = "other" location: str = "" project_name: str = "" tags: str = "" ping_interval: int = 30 alert_threshold: int = 5 is_enabled: bool = True class DeviceUpdate(BaseModel): name: Optional[str] = None ip: Optional[str] = None device_type: Optional[str] = None location: Optional[str] = None project_name: Optional[str] = None tags: Optional[str] = None ping_interval: Optional[int] = None alert_threshold: Optional[int] = None is_enabled: Optional[bool] = None class DeviceOut(BaseModel): id: int name: str ip: str device_type: str location: str project_name: str tags: str ping_interval: int alert_threshold: int is_enabled: bool current_status: str consecutive_failures: int last_ping_time: Optional[datetime] = None last_online_time: Optional[datetime] = None last_offline_time: Optional[datetime] = None created_at: datetime updated_at: datetime model_config = {"from_attributes": True}