"""Датаклассы строк БД и статусов рекордера.""" 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