PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); migrate($db); } return $db; } function migrate($db) { $db->exec("CREATE TABLE IF NOT EXISTS network_shapes ( id INT AUTO_INCREMENT PRIMARY KEY, label VARCHAR(255) NOT NULL DEFAULT '', shape_type ENUM('rectangle','ellipse','zone') DEFAULT 'rectangle', pos_x FLOAT DEFAULT 0, pos_y FLOAT DEFAULT 0, width FLOAT DEFAULT 200, height FLOAT DEFAULT 150, color VARCHAR(7) DEFAULT '#1e3a5f', border_color VARCHAR(7) DEFAULT '#3b82f6', opacity FLOAT DEFAULT 0.15, z_index INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); $db->exec("CREATE TABLE IF NOT EXISTS neptune_users ( id INT AUTO_INCREMENT PRIMARY KEY, user_token VARCHAR(255) NOT NULL UNIQUE, username VARCHAR(255) NOT NULL, email VARCHAR(255) DEFAULT '', role ENUM('admin','user') DEFAULT 'user', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); try { $db->exec("ALTER TABLE network_nodes ADD COLUMN notes TEXT DEFAULT ''"); } catch (Exception $e) { } }