Eerste commit
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- MijnBesluit - het bonnetje van een samenvoeging
|
||||
--
|
||||
-- Twee profielen van dezelfde persoon worden er één zodra zij zelf beide uitnodigingen aanneemt.
|
||||
-- Tot nu toe was dat onomkeerbaar, en dat stond ook zo in docs/Identiteit.md bij "wat hier nog
|
||||
-- niet is opgelost".
|
||||
--
|
||||
-- Waarom terugdraaien niet zomaar kan: na afloop is niet meer te zien wélke lidmaatschappen,
|
||||
-- berichten en bestanden bij het duplicaat hoorden. Ze staan gewoon bij het doel, tussen alles
|
||||
-- wat daar al stond. Gokken zou andermans gegevens meesleuren.
|
||||
--
|
||||
-- Daarom deze tabel. Bij elke samenvoeging komt hier één regel in te staan met precies wat er is
|
||||
-- verhuisd, als JSON. Terugdraaien is dan die lijst in omgekeerde volgorde aflopen. Regels die
|
||||
-- bij het samenvoegen zijn weggegooid - een dubbel lidmaatschap, een dubbele beheerder - staan
|
||||
-- er als volledige kopie in, want die moeten opnieuw worden aangemaakt.
|
||||
--
|
||||
-- De regel blijft ook na het terugdraaien staan, met undone_at gevuld. Dat er ooit is
|
||||
-- samengevoegd is zelf ook geschiedenis.
|
||||
--
|
||||
-- Let op: samenvoegingen van VOOR deze tabel hebben geen bonnetje en zijn dus niet terug te
|
||||
-- draaien. Dat is geen fout die te repareren valt; de gegevens om het mee te doen bestaan niet.
|
||||
--
|
||||
-- Draaien met:
|
||||
-- mysql -u root -p mijnbesluit < db\12_samenvoegingen.sql
|
||||
--
|
||||
-- Opnieuw draaien mag: er gebeurt dan niets.
|
||||
|
||||
USE `mijnbesluit`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `samenvoegingen` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`duplicate_person_id` BIGINT NOT NULL,
|
||||
`target_person_id` BIGINT NOT NULL,
|
||||
`by_user_id` BIGINT NOT NULL,
|
||||
`merged_at` DATETIME(6) NOT NULL,
|
||||
`steps` LONGTEXT NOT NULL,
|
||||
`undone_at` DATETIME(6) NULL,
|
||||
`undone_by_user_id` BIGINT NULL,
|
||||
`reason` VARCHAR(500) NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `ix_samenvoegingen_duplicaat` (`duplicate_person_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- 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. Samenvoegingen worden vanaf nu vastgelegd en kunnen worden teruggedraaid.' AS melding;
|
||||
Reference in New Issue
Block a user