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:
19
db.php
19
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 ====================
|
||||
|
||||
Reference in New Issue
Block a user