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");
|
$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 ====================
|
||||||
|
|||||||
Reference in New Issue
Block a user