# retoor 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"])