diff --git a/backend/scripts/pruefe_backups.py b/backend/scripts/pruefe_backups.py new file mode 100644 index 0000000..f500beb --- /dev/null +++ b/backend/scripts/pruefe_backups.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +"""Listet je Backup, wie viele Schlagwörter/Budget-Vorlagen/kategorisierte +Buchungen darin stecken. So sieht man, welches Backup noch heil ist.""" +import glob, os, sqlite3, sys + +muster = sys.argv[1] if len(sys.argv) > 1 else "/var/lib/certain-finance/backups/*.db" +print(f"{'Datei':<34}{'Schlagw.':>9}{'Budget':>8}{'Buch.m.Kat':>12}") +for f in sorted(glob.glob(muster)): + try: + con = sqlite3.connect(f"file:{f}?mode=ro", uri=True) + def z(sql): + try: + return con.execute(sql).fetchone()[0] + except sqlite3.Error: + return "-" + print(f"{os.path.basename(f):<34}" + f"{z('SELECT COUNT(*) FROM categorization_rules'):>9}" + f"{z('SELECT COUNT(*) FROM budget_template_lines'):>8}" + f"{z('SELECT COUNT(*) FROM transactions WHERE category_id IS NOT NULL'):>12}") + con.close() + except Exception as e: + print(f"{os.path.basename(f):<34} Fehler: {e}")