diff --git a/db.php b/db.php index b876881..c68a3dc 100644 --- a/db.php +++ b/db.php @@ -642,16 +642,19 @@ function initDatabase(): void { // Migraatio: yhdistä sites → laitetilat (kopioi vanhat sijainnit laitetiloiksi) try { - // Kopioi sites-taulun rivit laitetilat-tauluun (ohita duplikaatit) - $db->query(" - INSERT IGNORE INTO laitetilat (id, company_id, nimi, kuvaus, osoite, luotu, muokattu, muokkaaja) - SELECT id, company_id, nimi, '', CONCAT(IFNULL(osoite,''), IF(kaupunki != '', CONCAT(', ', kaupunki), '')), NOW(), NOW(), '' - FROM sites - "); - // Päivitä laitteiden laitetila_id vanhoista site_id-viittauksista - $db->query("UPDATE devices SET laitetila_id = site_id WHERE laitetila_id IS NULL AND site_id IS NOT NULL"); - // Päivitä IPAM-merkintöjen site_id viittaamaan laitetiloihin (jo sama ID) - // (ei tarvitse muuttaa koska ID:t ovat samat) + $sitesExist = $db->query("SELECT COUNT(*) AS cnt FROM sites")->fetch_assoc(); + if ((int)($sitesExist['cnt'] ?? 0) > 0) { + // Kopioi sites-taulun rivit laitetilat-tauluun (ohita duplikaatit) + $db->query(" + INSERT IGNORE INTO laitetilat (id, company_id, nimi, kuvaus, osoite, luotu, muokattu, muokkaaja) + SELECT id, company_id, nimi, '', CONCAT(IFNULL(osoite,''), IF(kaupunki != '', CONCAT(', ', kaupunki), '')), NOW(), NOW(), '' + FROM sites + "); + // Päivitä laitteiden laitetila_id vanhoista site_id-viittauksista + $db->query("UPDATE devices SET laitetila_id = site_id WHERE laitetila_id IS NULL AND site_id IS NOT NULL"); + // Tyhjennä sites-taulu ettei migraatio toista itseään + $db->query("DELETE FROM sites"); + } } catch (\Throwable $e) { /* ohitetaan */ } }