antragstracker/scripts/migrate_fristen.py

45 lines
1.5 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
"""Migration: Erstellt die fristen-Tabelle für Fristen-Tracking (Issue #17)."""
import sqlite3
import sys
from pathlib import Path
DB_PATH = Path(__file__).resolve().parent.parent / "data" / "tracker.db"
def migrate(db_path: Path = DB_PATH):
conn = sqlite3.connect(str(db_path))
conn.execute("PRAGMA journal_mode = WAL")
conn.execute("PRAGMA foreign_keys = ON")
conn.execute("""
CREATE TABLE IF NOT EXISTS fristen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
kette_id INTEGER REFERENCES ketten(id),
vorlage_id INTEGER REFERENCES vorlagen(id),
typ TEXT NOT NULL,
datum DATE NOT NULL,
beschreibung TEXT,
quelle TEXT DEFAULT 'manuell',
status TEXT DEFAULT 'offen',
erstellt_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
aktualisiert_at TIMESTAMP
)
""")
# Indices for common queries
conn.execute("CREATE INDEX IF NOT EXISTS idx_fristen_kette_id ON fristen(kette_id)")
conn.execute("CREATE INDEX IF NOT EXISTS idx_fristen_status ON fristen(status)")
conn.execute("CREATE INDEX IF NOT EXISTS idx_fristen_datum ON fristen(datum)")
conn.execute("CREATE INDEX IF NOT EXISTS idx_fristen_status_datum ON fristen(status, datum)")
conn.commit()
conn.close()
print(f"✅ Migration erfolgreich: fristen-Tabelle in {db_path}")
if __name__ == "__main__":
path = Path(sys.argv[1]) if len(sys.argv) > 1 else DB_PATH
migrate(path)