"""Watchdog report queries (read against watchdog.db). No Flask imports.""" import json import logging import sqlite3 logger = logging.getLogger(__name__) def list_reports(watchdog_conn, days=7): """Return recent watchdog reports; rows include parsed `meta` dict. Raises sqlite3.Error on read failure — the caller (service layer) decides how to degrade. """ cur = watchdog_conn.execute( "SELECT date, markdown, meta_json, created_at FROM reports " "ORDER BY date DESC LIMIT ?", (days,), ) reports = [] for row in cur.fetchall(): item = dict(row) try: item["meta"] = json.loads(item.get("meta_json") or "{}") except (json.JSONDecodeError, TypeError): item["meta"] = {} reports.append(item) return reports