Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
62 lines
3.2 KiB
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;
|