diff --git a/src/db.php b/src/db.php index 3210fcc..98a54ee 100644 --- a/src/db.php +++ b/src/db.php @@ -1,10 +1,11 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + // 1. User Tabelle $pdo->exec("CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, @@ -14,6 +15,7 @@ try { created_at DATETIME DEFAULT CURRENT_TIMESTAMP )"); + // 2. Nodes Tabelle $pdo->exec("CREATE TABLE IF NOT EXISTS nodes ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, @@ -23,19 +25,39 @@ try { type TEXT DEFAULT 'pve' )"); - // Automatisches Datenbank-Upgrade für den PBS! (Fügt Spalte 'type' hinzu, falls sie fehlt) - try { - $pdo->exec("ALTER TABLE nodes ADD COLUMN type TEXT DEFAULT 'pve'"); - } catch (PDOException $e) { - // Ignorieren, wenn die Spalte bereits existiert - } + // Automatisches Upgrade für ältere Versionen + try { $pdo->exec("ALTER TABLE nodes ADD COLUMN type TEXT DEFAULT 'pve'"); } catch (PDOException $e) {} + // 3. NEU: Task Scheduler Tabelle + $pdo->exec("CREATE TABLE IF NOT EXISTS scheduled_tasks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + node_id INTEGER NOT NULL, + action_type TEXT NOT NULL, + target_vmid TEXT, + cron_schedule TEXT NOT NULL, + last_run INTEGER DEFAULT 0, + is_active INTEGER DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + )"); + + // 4. NEU: Audit Logs Tabelle + $pdo->exec("CREATE TABLE IF NOT EXISTS audit_logs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, + username TEXT, + action TEXT, + target TEXT, + timestamp DATETIME DEFAULT CURRENT_TIMESTAMP + )"); + + // Standard-Admin anlegen, falls noch keine User existieren $stmt = $pdo->query("SELECT COUNT(*) FROM users"); if ($stmt->fetchColumn() == 0) { $hash = password_hash('admin', PASSWORD_DEFAULT); $pdo->exec("INSERT INTO users (username, password_hash, role) VALUES ('admin', '$hash', 'admin')"); } } catch (PDOException $e) { - die("Datenbank-Fehler: " . $e->getMessage()); + die(json_encode(['success' => false, 'error' => "Datenbank-Fehler: " . $e->getMessage()])); } ?> \ No newline at end of file