This commit is contained in:
team3
2026-07-13 05:18:55 +02:00
parent 7ee425f7fa
commit 8926f87185
19 changed files with 703 additions and 41 deletions

View File

@@ -82,7 +82,8 @@ CREATE TABLE IF NOT EXISTS kanten(
art TEXT NOT NULL CHECK(art IN ('braucht','verwandt')), status TEXT NOT NULL DEFAULT 'aktiv',
UNIQUE(von_atom, zu_atom, art));
CREATE TABLE IF NOT EXISTS artefakte(
id INTEGER PRIMARY KEY, atom_id INTEGER NOT NULL, typ TEXT NOT NULL CHECK(typ IN ('flashcard','beispiel')),
id INTEGER PRIMARY KEY, atom_id INTEGER NOT NULL,
typ TEXT NOT NULL CHECK(typ IN ('flashcard','beispiel','aussage')),
inhalt TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'kandidat');
CREATE INDEX IF NOT EXISTS idx_artefakte_atom ON artefakte(atom_id);
CREATE TABLE IF NOT EXISTS lernziele(
@@ -145,6 +146,20 @@ def _init_schema(con: sqlite3.Connection) -> None:
# Befunde entfernter Ebenen schließen — sie würden sonst ewig als „offen" im Board stehen
con.execute("UPDATE befunde SET status='veraltet'"
" WHERE status='offen' AND ebene IN ('diagramme', 'fehlersuche')")
# CHECK-Migration: Bestands-DBs kennen typ='aussage' nicht (SQLite kann CHECKs
# nicht ändern) → Tabelle einmalig neu aufbauen. Erkennung über sqlite_master.
alt = con.execute("SELECT sql FROM sqlite_master WHERE type='table'"
" AND name='artefakte'").fetchone()
if alt and "'aussage'" not in alt[0]:
con.executescript(
"ALTER TABLE artefakte RENAME TO artefakte_alt;"
"CREATE TABLE artefakte("
" id INTEGER PRIMARY KEY, atom_id INTEGER NOT NULL,"
" typ TEXT NOT NULL CHECK(typ IN ('flashcard','beispiel','aussage')),"
" inhalt TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'kandidat');"
"INSERT INTO artefakte SELECT * FROM artefakte_alt;"
"DROP TABLE artefakte_alt;"
"CREATE INDEX IF NOT EXISTS idx_artefakte_atom ON artefakte(atom_id);")
con.commit()