Migroi vanhat dokumenttikansiot asiakaskohtaisiksi

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 10:19:45 +02:00
parent 1d6c477335
commit 89a0e8fe4b

19
db.php
View File

@@ -657,6 +657,25 @@ function initDatabase(): void {
$db->query("DELETE FROM sites"); $db->query("DELETE FROM sites");
} }
} catch (\Throwable $e) { /* ohitetaan */ } } 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 ==================== // ==================== YRITYKSET ====================