update
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user