This commit is contained in:
2026-05-30 00:08:59 +05:00
commit d3afd698b6
52 changed files with 8150 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
"""Датаклассы строк БД и статусов рекордера."""
from __future__ import annotations
from dataclasses import asdict, dataclass
from enum import Enum
class CameraState(str, Enum):
ONLINE = "online" # ffmpeg пишет
RETRYING = "retrying" # упал, ждём перезапуск (backoff)
OFFLINE = "offline" # выключена/остановлена
STARTING = "starting"
@dataclass
class Recording:
id: int
camera_id: str
path: str
started_at: int
ended_at: int | None
duration_s: float | None
size_bytes: int | None
created_at: int
def to_dict(self) -> dict:
return asdict(self)
@dataclass
class CameraStatus:
camera_id: str
name: str
enabled: bool
state: CameraState
last_error: str | None = None
restarts: int = 0
pid: int | None = None
since: int | None = None # unix-время входа в текущее состояние
def to_dict(self) -> dict:
d = asdict(self)
d["state"] = self.state.value
return d