diff --git a/server-internal/waechter.mjs b/server-internal/waechter.mjs index 7c8477d9..0427ef64 100644 --- a/server-internal/waechter.mjs +++ b/server-internal/waechter.mjs @@ -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,