-- 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;