Files
vendoo/tools/verify-production-operations-db-1.42.0.py
Masterluke77andGitHub 40071f718e Vendoo 1.43.0 – Production Update
Manifestbasierter Production-Updater 3.3, Modulnavigation, optionales Produktbild Studio, Listing-Studio-Aktionsleiste sowie plattformübergreifende Windows-/Linux-Release-Gates.
2026-07-10 13:16:21 +02:00

33 lines
1.8 KiB
Python

from pathlib import Path
import re
import sqlite3
import tempfile
root = Path(__file__).resolve().parent.parent
source = (root / 'lib' / 'db.mjs').read_text(encoding='utf-8')
required = ['deployment_runs', 'deployment_events', 'backup_verifications', 'production_checks']
statements = {}
for table in required:
match = re.search(rf"db\.exec\(`(CREATE TABLE IF NOT EXISTS {re.escape(table)} \(.*?\n \))`\);", source, re.S)
if not match:
raise SystemExit(f'Fehlende CREATE-TABLE-Anweisung: {table}')
statements[table] = match.group(1)
with tempfile.NamedTemporaryFile(suffix='.db') as handle:
con = sqlite3.connect(handle.name)
con.execute('PRAGMA foreign_keys = ON')
con.execute('CREATE TABLE users (id INTEGER PRIMARY KEY)')
con.execute('CREATE TABLE operation_backups (id TEXT PRIMARY KEY)')
for table in required:
con.execute(statements[table])
con.execute("INSERT INTO deployment_runs (id,idempotency_key,current_version,target_version) VALUES ('r1','idem-0001','1.41.2','1.42.0')")
con.execute("INSERT INTO deployment_events (run_id,state,event_type,message) VALUES ('r1','checking','run.created','created')")
con.execute("INSERT INTO operation_backups (id) VALUES ('b1')")
con.execute("INSERT INTO backup_verifications (id,backup_id,deployment_run_id,status) VALUES ('v1','b1','r1','verified')")
con.execute("INSERT INTO production_checks (id,overall_status) VALUES ('p1','passed')")
assert con.execute('SELECT count(*) FROM deployment_events WHERE run_id = ?', ('r1',)).fetchone()[0] == 1
assert con.execute('PRAGMA foreign_key_check').fetchall() == []
assert con.execute('PRAGMA integrity_check').fetchone()[0] == 'ok'
print('Production-Operations-DB-Gate 1.42.0 erfolgreich: additive Tabellen, Fremdschlüssel und SQLite-Integrität geprüft.')