From 89a0e8fe4bb7735df8191314f3629adcee08250e Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Thu, 12 Mar 2026 10:19:45 +0200 Subject: [PATCH] Migroi vanhat dokumenttikansiot asiakaskohtaisiksi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Vanhat kansiot (customer_id = NULL) saavat customer_id:n dokumenttiensa perusteella - Tyhjät/orvot kansiot poistetaan automaattisesti - Migraatio on idempotenssi: ei tee mitään kun orphaneja ei ole Co-Authored-By: Claude Opus 4.6 --- db.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/db.php b/db.php index 6b4d62c..2c0b69e 100644 --- a/db.php +++ b/db.php @@ -657,6 +657,25 @@ function initDatabase(): void { $db->query("DELETE FROM sites"); } } catch (\Throwable $e) { /* ohitetaan */ } + + // Migraatio: aseta vanhojen kansioiden customer_id dokumenttien perusteella + try { + $orphans = $db->query("SELECT id FROM document_folders WHERE customer_id IS NULL"); + while ($row = $orphans->fetch_assoc()) { + $fid = $row['id']; + // Hae yleisin customer_id kansion dokumenteista + $res = $db->query("SELECT customer_id, COUNT(*) AS cnt FROM documents WHERE folder_id = '$fid' AND customer_id IS NOT NULL GROUP BY customer_id ORDER BY cnt DESC LIMIT 1"); + $top = $res->fetch_assoc(); + if ($top && $top['customer_id']) { + $cid = $db->real_escape_string($top['customer_id']); + $db->query("UPDATE document_folders SET customer_id = '$cid' WHERE id = '$fid'"); + } else { + // Kansio ei sisällä dokumentteja asiakkaalla → poistetaan + $db->query("UPDATE documents SET folder_id = NULL WHERE folder_id = '$fid'"); + $db->query("DELETE FROM document_folders WHERE id = '$fid'"); + } + } + } catch (\Throwable $e) { /* ohitetaan */ } } // ==================== YRITYKSET ====================