Files
ad/molodetz/database/services_state.py
T

39 lines
981 B
Python
Raw Normal View History

2026-10-05 09:36:20 +02:00
# retoor <retoor@molodetz.nl>
import json
from molodetz.database.core import db, now_iso
def get_service_state(name):
if "service_state" not in db.tables:
return None
return db["service_state"].find_one(name=name)
def ensure_service_state(name):
row = get_service_state(name)
if row:
return row["id"]
return db["service_state"].insert(
{
"name": name,
"status": "stopped",
"last_run": None,
"next_run": None,
"started_at": None,
"heartbeat": None,
"logs": "[]",
"metrics": "{}",
"updated_at": now_iso(),
}
)
def write_service_state(row_id, **fields):
for key in ("logs", "metrics"):
if key in fields and not isinstance(fields[key], str):
fields[key] = json.dumps(fields[key])
fields["id"] = row_id
fields["updated_at"] = now_iso()
db["service_state"].update(fields, ["id"])