Yhdistä Sijainnit ja Laitetilat samaksi konseptiksi
Sijainnit (sites) ja Laitetilat olivat käytännössä sama asia. Nyt kaikki hallitaan Laitetilat-välilehdeltä: - DB-migraatio kopioi vanhat sites → laitetilat (sama ID säilyy) - Laitteiden site_id päivitetty automaattisesti laitetila_id:ksi - IPAM JOINaa nyt laitetilat-taulua sites:n sijaan - Sijainnit sub-tab poistettu Tekniikasta - Laiteformissa yksi "Sijainti / Laitetila" dropdown - Sites API-endpointit poistettu (sites palauttaa laitetilat) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
50
db.php
50
db.php
@@ -639,6 +639,20 @@ function initDatabase(): void {
|
||||
try {
|
||||
$db->query("UPDATE users SET role = 'user' WHERE role = 'admin'");
|
||||
} catch (\Throwable $e) { /* ohitetaan */ }
|
||||
|
||||
// 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)
|
||||
} catch (\Throwable $e) { /* ohitetaan */ }
|
||||
}
|
||||
|
||||
// ==================== YRITYKSET ====================
|
||||
@@ -1040,40 +1054,16 @@ function dbDeleteCustomer(string $customerId): void {
|
||||
_dbExecute("DELETE FROM customers WHERE id = ?", [$customerId]);
|
||||
}
|
||||
|
||||
// ==================== SIJAINNIT (SITES) ====================
|
||||
|
||||
function dbLoadSites(string $companyId): array {
|
||||
return _dbFetchAll("SELECT * FROM sites WHERE company_id = ? ORDER BY nimi", [$companyId]);
|
||||
}
|
||||
|
||||
function dbSaveSite(string $companyId, array $site): void {
|
||||
_dbExecute("
|
||||
INSERT INTO sites (id, company_id, nimi, osoite, kaupunki)
|
||||
VALUES (:id, :company_id, :nimi, :osoite, :kaupunki)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
nimi = VALUES(nimi), osoite = VALUES(osoite), kaupunki = VALUES(kaupunki)
|
||||
", [
|
||||
'id' => $site['id'],
|
||||
'company_id' => $companyId,
|
||||
'nimi' => $site['nimi'] ?? '',
|
||||
'osoite' => $site['osoite'] ?? '',
|
||||
'kaupunki' => $site['kaupunki'] ?? '',
|
||||
]);
|
||||
}
|
||||
|
||||
function dbDeleteSite(string $siteId): void {
|
||||
// Nollaa viittaavien laitteiden site_id
|
||||
_dbExecute("UPDATE devices SET site_id = NULL WHERE site_id = ?", [$siteId]);
|
||||
_dbExecute("DELETE FROM sites WHERE id = ?", [$siteId]);
|
||||
}
|
||||
// ==================== SIJAINNIT (SITES) — POISTETTU, KÄYTETÄÄN LAITETILOJA ====================
|
||||
// Sites on yhdistetty laitetiloihin. Migraatio kopioi vanhat sites → laitetilat.
|
||||
// dbLoadSites, dbSaveSite, dbDeleteSite poistettu.
|
||||
|
||||
// ==================== LAITTEET (DEVICES) ====================
|
||||
|
||||
function dbLoadDevices(string $companyId): array {
|
||||
$devices = _dbFetchAll("
|
||||
SELECT d.*, s.nimi AS site_name, lt.nimi AS laitetila_name
|
||||
SELECT d.*, lt.nimi AS laitetila_name
|
||||
FROM devices d
|
||||
LEFT JOIN sites s ON d.site_id = s.id
|
||||
LEFT JOIN laitetilat lt ON d.laitetila_id = lt.id
|
||||
WHERE d.company_id = ?
|
||||
ORDER BY d.nimi
|
||||
@@ -1121,9 +1111,9 @@ function dbDeleteDevice(string $deviceId): void {
|
||||
|
||||
function dbLoadIpam(string $companyId): array {
|
||||
$rows = _dbFetchAll("
|
||||
SELECT i.*, s.nimi AS site_name
|
||||
SELECT i.*, lt.nimi AS site_name
|
||||
FROM ipam i
|
||||
LEFT JOIN sites s ON i.site_id = s.id
|
||||
LEFT JOIN laitetilat lt ON i.site_id = lt.id
|
||||
WHERE i.company_id = ?
|
||||
ORDER BY i.tyyppi, i.vlan_id, i.verkko
|
||||
", [$companyId]);
|
||||
|
||||
Reference in New Issue
Block a user