Files
MijnBesluit/db/handmatig/22c_serverchangelog_view.sql

62 lines
3.2 KiB
SQL

-- 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 '<kies-zelf-een-wachtwoord>';
-- 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;