-- MijnBesluit - de versiehistorie als changelog voor SideKick -- -- SideKick toont op het tabblad Changelog de regels van een tabel of view met een vast formaat -- (zie de SideKick-handleiding, sectie 5: Datum, Versie, Product, Soort, Onderwerp, Inhoud, Actief, -- Aanmaakdatum, Updatedatum). MijnBesluit heeft geen tweede changelog: de versiehistorie -- (version_history, onderhouden op de website onder Beheer > Versiehistorie) IS de changelog. -- Deze view geeft haar in dat formaat. SideKick bewerkt niets; de agent op de server leest alleen. -- -- Datum datum -- Versie versie, leeg als het alleen de website betreft -- Product vast: MijnBesluit (app en website samen) -- Soort vast: Nieuw (de versiehistorie bevat alleen nieuwe of wezenlijk gewijzigde -- functies, geen bugfixes) -- Onderwerp de kop (per datum uniek, daar zorgt version_history voor) -- Inhoud de uitleg, platte tekst -- Actief zichtbaar (0 = verborgen) -- Aanmaakdatum aangemaakt_op (UTC) -- Updatedatum gewijzigd_op (UTC); de website zet hem bij elke wijziging opnieuw, ook bij -- verbergen of tonen. Een verwijderde regel valt weg; SideKick merkt dat aan het -- afwijkende aantal en leest dan alles opnieuw. -- -- De view draait met de rechten van wie hem maakt (root, SQL SECURITY DEFINER). Wie hem leest hoeft -- dus alleen SELECT op de view te hebben, niet op version_history. -- -- Eenmalig te draaien als root, nĂ¡ db\22_versiehistorie.sql: -- mysql -u root -p mijnbesluit < db\handmatig\22c_serverchangelog_view.sql -- -- Opnieuw draaien mag (CREATE OR REPLACE). Het staat in handmatig\ omdat het uitrolaccount wel -- tabellen maar niet per se views mag maken, en geen rechten mag geven. -- -- Daarna in SideKick bij de agent van MijnBesluit: "Changelog: tabel" = serverchangelog, met -- DbNaam = mijnbesluit en een gebruiker die de view mag lezen (zie onderaan). USE `mijnbesluit`; CREATE OR REPLACE SQL SECURITY DEFINER VIEW `serverchangelog` AS SELECT `datum` AS `Datum`, COALESCE(`versie`, '') AS `Versie`, 'MijnBesluit' AS `Product`, 'Nieuw' AS `Soort`, `kop` AS `Onderwerp`, `tekst` AS `Inhoud`, `zichtbaar` AS `Actief`, `aangemaakt_op` AS `Aanmaakdatum`, `gewijzigd_op` AS `Updatedatum` FROM `version_history`; -- De gebruiker die de agent gebruikt om te lezen. Dit geeft de bestaande applicatiegebruiker leesrecht -- op alleen de view. Liever een eigen leesgebruiker? Maak die zelf aan met een wachtwoord dat alleen -- jij kent en geef hem hetzelfde recht, bijvoorbeeld: -- CREATE USER 'mijnbesluit_changelog'@'localhost' IDENTIFIED BY ''; -- GRANT SELECT ON `mijnbesluit`.`serverchangelog` TO 'mijnbesluit_changelog'@'localhost'; GRANT SELECT ON `mijnbesluit`.`serverchangelog` TO 'mijnbesluit_app'@'localhost'; FLUSH PRIVILEGES; -- Controle: de regels van de versiehistorie, nieuwste bovenaan. SELECT `Datum`, `Versie`, `Product`, `Soort`, `Onderwerp`, `Actief`, `Updatedatum` FROM `serverchangelog` ORDER BY `Datum` DESC, `Aanmaakdatum` DESC LIMIT 20;