-- ===================================================================== -- Push-Benachrichtigungen: angemeldete Geraete -- -- WARUM EINE EIGENE TABELLE UND KEIN FELD AM BENUTZER -- -- Ein Mensch hat mehrere Geraete -- Handy, Rechner, vielleicht ein -- Tablet -- und jedes meldet sich einzeln an. Jedes bekommt eine eigene -- Adresse und eigene Schluessel. Ein einzelnes Feld am Benutzer koennte -- immer nur das zuletzt angemeldete Geraet halten, und die Anmeldung am -- Rechner wuerde die am Handy stillschweigend loeschen. -- -- WAS HIER STEHT UND WAS NICHT -- -- endpunkt, p256dh und auth kommen vom Browser. Sie sind keine -- Geheimnisse im engeren Sinn, aber sie erlauben es, an genau dieses -- Geraet zu senden -- deshalb liegen sie nicht offener als der Rest der -- Datenbank. -- -- ZAEHLER STATT SOFORT LOESCHEN -- -- Meldet der Push-Dienst 404 oder 410, ist das Geraet endgueltig weg und -- der Eintrag wird geloescht. Bei allen anderen Fehlern (Netz gestoert, -- Dienst kurz nicht erreichbar) waere Loeschen falsch -- dann wuerde -- eine einzelne Stoerung die Anmeldung kosten. Deshalb ein Zaehler: -- voruebergehende Fehler heilen sich, dauerhafte fallen auf. -- ===================================================================== CREATE TABLE IF NOT EXISTS wd_push_geraete ( id TEXT PRIMARY KEY, -- Die Adresse beim Push-Dienst. Eindeutig: Meldet sich dasselbe -- Geraet erneut an, soll der alte Eintrag ersetzt werden und kein -- zweiter danebenstehen -- sonst kaeme jede Meldung doppelt. endpunkt TEXT NOT NULL UNIQUE, p256dh TEXT NOT NULL, auth TEXT NOT NULL, -- Wem gehoert das Geraet. Verweist auf die Team-Anmeldung, damit beim -- Entzug eines Zugangs auch dessen Geraete verschwinden koennen. benutzer_id TEXT, -- Etwas Wiedererkennbares fuer die Liste in der Verwaltung ("Chrome -- auf Android"). Ohne das steht dort nur eine 200 Zeichen lange -- Adresse, und niemand weiss, welches Geraet er gerade abmeldet. bezeichnung TEXT, erstellt_am TEXT NOT NULL, zuletzt_ok_am TEXT, fehler_zaehler INTEGER NOT NULL DEFAULT 0, letzter_fehler TEXT ); CREATE INDEX IF NOT EXISTS idx_wd_push_benutzer ON wd_push_geraete (benutzer_id);