from datetime import datetime from typing import Optional from sqlmodel import Field, SQLModel class EntityCache(SQLModel, table=True): __tablename__ = "entities_cache" entity_id: str = Field(primary_key=True) domain: str = "" friendly_name: str = "" state: str = "" attrs_json: str = "{}" device_class: Optional[str] = None unit_of_measurement: Optional[str] = None area_id: Optional[str] = None device_id: Optional[str] = None integration: Optional[str] = None is_disabled: bool = False is_hidden: bool = False is_available: bool = True last_changed: Optional[datetime] = None last_updated: Optional[datetime] = None fetched_at: datetime = Field(default_factory=datetime.utcnow) class EntityFlag(SQLModel, table=True): __tablename__ = "entity_flags" entity_id: str = Field(primary_key=True) ignored_local: bool = False favorite: bool = False notes: str = "" original_state: Optional[str] = None disabled_at: Optional[datetime] = None class AuditLog(SQLModel, table=True): __tablename__ = "audit_log" id: Optional[int] = Field(default=None, primary_key=True) ts: datetime = Field(default_factory=datetime.utcnow) action: str = "" entity_ids_json: str = "[]" result: str = "" error: str = ""