-- MijnBesluit - toestellen voor push-meldingen -- -- Elke app meldt zich met een kenmerk van Firebase (Android) of APNs (iOS). Daarmee kan de -- SocketServer een melding sturen als er een bericht wordt bezorgd, ook als de app dicht is. -- -- Draaien met: -- mysql -u root -p mijnbesluit < db\05_meldingen.sql -- -- Opnieuw draaien mag: er gebeurt dan niets. USE `mijnbesluit`; CREATE TABLE IF NOT EXISTS `toestellen` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `user_id` BIGINT NOT NULL, -- Het kenmerk van Google is lang; 512 is ruim genoeg en past nog in een unieke index. `kenmerk` VARCHAR(512) NOT NULL, `platform` VARCHAR(20) NOT NULL DEFAULT 'android', `naam` VARCHAR(120) NULL, `aangemeld_op` DATETIME(3) NOT NULL, `laatst_gezien` DATETIME(3) NOT NULL, `afgemeld_op` DATETIME(3) NULL, PRIMARY KEY (`id`), -- Eén kenmerk hoort bij één toestel. Wisselt de gebruiker, dan verhuist de regel mee. UNIQUE KEY `ux_toestellen_kenmerk` (`kenmerk`), KEY `ix_toestellen_user` (`user_id`), CONSTRAINT `fk_toestel_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB; -- De rechten voor de applicatiegebruiker staan NIET hier maar in 02_applicatiegebruiker.sql. -- -- Waarom: de scripts vanaf 03 worden ook door de uitrolagent gedraaid, met een beperkt -- databaseaccount dat geen rechten mág uitdelen. Een GRANT hier laat die hele uitrol struikelen, -- en dat account meer macht geven is de verkeerde kant op. Rechten uitdelen is inrichten; dat -- doet een mens één keer als root. Een zelfcontrole legt elke CREATE TABLE in deze map naast de -- lijst in 02, dus vergeten kan niet ongemerkt. SELECT 'Klaar: tabel toestellen aangemaakt.' AS melding;