Files
2026-05-30 00:08:59 +05:00

45 lines
1.1 KiB
Python

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