Waechter: leere Geraeteliste und fehlende Tabelle unterscheiden

Der erste echte Probelauf meldete "kein Geraet angemeldet". Richtig --
aber dieselbe Meldung waere auch erschienen, wenn die Tabelle gar nicht
existierte, weil dbLesen in beiden Faellen "" zurueckgibt.

Das sind zwei voellig verschiedene Lagen: Einmal genuegt ein Klick in
der Verwaltung, einmal ist die Migration nicht gelaufen. Wer die falsche
Meldung liest, drueckt auf Einschalten, sieht keine Wirkung und sucht
dann beim Browser statt bei der Datenbank.

Genau die Sorte Verwechslung, gegen die dieser ganze Strang gebaut
wurde. Jetzt wird zuerst gefragt, ob die Tabelle da ist, und die Meldung
sagt im harmlosen Fall auch gleich, was zu tun ist.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-26 14:38:11 +02:00
co-authored by Claude Opus 5
parent bcf6e01fa9
commit b2f4567cce
+25 -1
View File
@@ -244,8 +244,32 @@ async function meldung(titel, text) {
return { gesendet: 0, grund: "Schluessel nicht entschluesselbar" };
}
/* ⚠️ Hier standen zwei sehr verschiedene Ursachen unter derselben
Meldung: eine leere Geraeteliste und eine fehlende Tabelle.
dbLesen gibt in beiden Faellen "" zurueck -- einmal, weil niemand
angemeldet ist (harmlos, ein Klick behebt es), einmal, weil die
Migration nicht gelaufen ist (ein Fehler, der Suchen an ganz
anderer Stelle ausloest). Wer "kein Geraet angemeldet" liest, klickt
auf Einschalten; wenn dann nichts passiert, sucht er beim Browser
statt bei der Datenbank.
Deshalb wird jetzt zuerst gefragt, ob es die Tabelle ueberhaupt
gibt. Aufgefallen am 26.08.2026 beim ersten echten Probelauf. */
const tabelleDa = dbLesen(
"SELECT count(*) FROM sqlite_master WHERE type='table' AND name='wd_push_geraete';"
);
if (tabelleDa !== "1") {
return { gesendet: 0, grund: "Tabelle wd_push_geraete fehlt — Migration 0019 nicht gelaufen" };
}
const zeilen = dbLesen("SELECT endpunkt, p256dh, auth FROM wd_push_geraete;");
if (!zeilen) return { gesendet: 0, grund: "kein Geraet angemeldet" };
if (!zeilen) {
return {
gesendet: 0,
grund: "kein Geraet angemeldet — in der Verwaltung unter Uebersicht einschalten",
};
}
const vapid = {
oeffentlich, privat,