48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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 = ""
|