query("SELECT wp_key, name, lat, lon, region, wp_type, info FROM geo_waypoints ORDER BY region, wp_type, name")->fetchAll(PDO::FETCH_ASSOC); if (!$rows) { exit("Keine Waypoints in DB — Abbruch.\n"); } $esc = fn(?string $s) => $s === null ? 'NULL' : "'" . str_replace("'", "''", $s) . "'"; $sql = "CREATE TABLE IF NOT EXISTS geo_waypoints (\n"; $sql .= " id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n"; $sql .= " wp_key VARCHAR(32) NOT NULL UNIQUE,\n"; $sql .= " name VARCHAR(100) NOT NULL,\n"; $sql .= " lat DECIMAL(8,5) NOT NULL,\n"; $sql .= " lon DECIMAL(8,5) NOT NULL,\n"; $sql .= " region VARCHAR(32) DEFAULT 'vorarlberg',\n"; $sql .= " wp_type ENUM('base','city','village','peak','target','pass') DEFAULT 'village',\n"; $sql .= " info VARCHAR(255),\n"; $sql .= " updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n"; $sql .= ") ENGINE=InnoDB;\n\n"; $sql .= "DELETE FROM geo_waypoints;\n\n"; $sql .= "INSERT INTO geo_waypoints (wp_key, name, lat, lon, region, wp_type, info) VALUES\n"; $lines = []; foreach ($rows as $r) { $lines[] = sprintf( "(%s,%s,%s,%s,%s,%s,%s)", $esc($r['wp_key']), $esc($r['name']), $r['lat'], $r['lon'], $esc($r['region']), $esc($r['wp_type']), $esc($r['info']) ); } $sql .= implode(",\n", $lines) . ";\n"; $target = __DIR__ . '/../assets/data/waypoints.sql'; $bytes = file_put_contents($target, $sql); if ($bytes === false) { exit("Fehler: Konnte $target nicht schreiben.\n"); } $count = count($rows); echo "OK — $count Waypoints nach $target geschrieben ($bytes Bytes).\n";