39 lines
1.7 KiB
SQL
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;
|