From 5a796d8b13fe1a6bc63c7380d9212381dc13b343 Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Thu, 12 Mar 2026 01:36:08 +0200 Subject: [PATCH] =?UTF-8?q?Korjaa=20sites=E2=86=92laitetilat=20migraatio:?= =?UTF-8?q?=20tyhjenn=C3=A4=20sites-taulu=20kopioinnin=20j=C3=A4lkeen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ongelma: migraatio ajautui joka API-kutsulla ja kopioi sites-taulun rivit takaisin laitetilat-tauluun, joten poistettua laitetilaa ei voinut oikeasti poistaa — se ilmestyi aina takaisin. Korjaus: DELETE FROM sites migraation jälkeen, ja tarkista ensin onko sites-taulussa rivejä (vältetään turha ajaminen). Co-Authored-By: Claude Opus 4.6 --- db.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) 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 */ } }