Files
MijnBesluit/db/05_meldingen.sql
T
2026-09-27 14:21:31 +00:00

39 lines
1.7 KiB
SQL

-- 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;