diff --git a/db/handmatig/22c_serverchangelog_view.sql b/db/handmatig/22c_serverchangelog_view.sql new file mode 100644 index 0000000..aecc5fa --- /dev/null +++ b/db/handmatig/22c_serverchangelog_view.sql @@ -0,0 +1,61 @@ +-- 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; diff --git a/docs/Versiehistorie.md b/docs/Versiehistorie.md index d549fde..d74cccd 100644 --- a/docs/Versiehistorie.md +++ b/docs/Versiehistorie.md @@ -31,9 +31,26 @@ geen tekstuele correcties, geen opmaak die is rechtgezet. 2. Als root: `mysql -u root -p < db\02_applicatiegebruiker.sql` (rechten voor `mijnbesluit_app` op de nieuwe tabel) en `mysql -u root -p mijnbesluit < db\handmatig\22b_versiehistorie_startrijen.sql` (de bestaande regels; `INSERT IGNORE`, dus opnieuw draaien is veilig). -3. Daarna pas de website en de SocketServer uitrollen. Andersom leest de nieuwe code een tabel +3. Voor de changelog in SideKick (optioneel, kan ook later): als root + `mysql -u root -p mijnbesluit < db\handmatig\22c_serverchangelog_view.sql` (zie hieronder). +4. Daarna pas de website en de SocketServer uitrollen. Andersom leest de nieuwe code een tabel die er nog niet is, of waar de applicatiegebruiker nog niet bij mag. +## Changelog in SideKick + +Het tabblad Changelog van SideKick leest een tabel of view `serverchangelog` met vaste kolommen. De +versiehistorie is de changelog van MijnBesluit, dus er is geen tweede lijst: de view +`serverchangelog` (script `db\handmatig\22c_serverchangelog_view.sql`, als root) geeft +`version_history` in dat formaat terug. `Product` is vast "MijnBesluit", `Soort` vast "Nieuw" (de +lijst bevat geen bugfixes), `Actief` is `zichtbaar` en `Updatedatum` is `gewijzigd_op`, dat de site +bij elke wijziging opnieuw zet. De agent leest de view alleen. + +Instellen in SideKick bij de agent van MijnBesluit: "Changelog: tabel" = `serverchangelog`, `DbNaam` = +`mijnbesluit`, en een gebruiker met SELECT op de view (het script geeft dat aan `mijnbesluit_app`; +een aparte leesgebruiker kan ook, het voorbeeld staat in het script). Het wachtwoord alleen op de +server invullen. Voorwaarden: de agent kent de actie `ChangelogLezen` en het project staat op Weg hub. +De inhoud gaat naar het SideKick-scherm van de beheerder: geen persoonsgegevens in een regel. + ## Oudere apps De tekst van de versiehistorie zat tot en met appversie 1.1 (versiecode 3) in de app zelf. Die