Files
MijnBesluit/db/08_thumbnails.sql
2026-09-27 14:21:31 +00:00

56 lines
2.6 KiB
SQL

-- MijnBesluit - kleine versie van een foto, om in lijstjes te tonen
--
-- Een profielfoto op de kaart van een persoon is een plaatje van hooguit veertig pixels. De
-- foto zelf is al gauw een paar honderd kilobyte, en tien personen in een lijst zijn dan een
-- paar megabyte - over een mobiele verbinding merk je dat meteen.
--
-- Daarom slaan we bij een foto meteen een kleine versie op. Die is versleuteld met dezelfde
-- sleutel als de foto zelf, dus er staat niets leesbaars in de database:
--
-- thumbnail : de kleine versie, versleuteld
-- thumbnail_nonce : het eenmalige getal van die versleuteling
-- thumbnail_tag : het echtheidskenmerk van die versleuteling
--
-- Alle drie leeg betekent: er is geen kleine versie. Dat is geen fout - bij een document of een
-- video is er niets te verkleinen, en bij foto's van voor deze wijziging is hij er nog niet.
-- Het scherm valt dan terug op de beginletters, precies zoals het zonder foto ook doet.
--
-- Draaien met:
-- mysql -u root -p mijnbesluit < db\08_thumbnails.sql
--
-- Opnieuw draaien mag: er gebeurt dan niets.
USE `mijnbesluit`;
-- ---------------------------------------------------------------- thumbnail
SET @bestaat := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'vault_files' AND COLUMN_NAME = 'thumbnail');
SET @sql := IF(@bestaat = 0,
'ALTER TABLE `vault_files` ADD COLUMN `thumbnail` BLOB NULL',
'SELECT "thumbnail bestaat al" AS melding');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- ---------------------------------------------------------------- thumbnail_nonce
SET @bestaat := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'vault_files' AND COLUMN_NAME = 'thumbnail_nonce');
SET @sql := IF(@bestaat = 0,
'ALTER TABLE `vault_files` ADD COLUMN `thumbnail_nonce` VARBINARY(12) NULL',
'SELECT "thumbnail_nonce bestaat al" AS melding');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-- ---------------------------------------------------------------- thumbnail_tag
SET @bestaat := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'vault_files' AND COLUMN_NAME = 'thumbnail_tag');
SET @sql := IF(@bestaat = 0,
'ALTER TABLE `vault_files` ADD COLUMN `thumbnail_tag` VARBINARY(16) NULL',
'SELECT "thumbnail_tag bestaat al" AS melding');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SELECT 'Klaar. De kleine versies worden vanaf nu bij het opslaan van een foto meegemaakt.' AS melding;