// ------------------------------------------------------------- // EINMALIGES MIGRATIONSSKRIPT // Überträgt alle vorhandenen maps/*.json Dateien in die neue // "maps"-Tabelle der Datenbank. // // Ausführen mit: node migrate_maps.js // (im selben Ordner wie server.js, NACHDEM die "maps"-Tabelle // per SQL angelegt wurde) // ------------------------------------------------------------- import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; import mysql from "mysql2/promise"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const db = await mysql.createPool({ host: "156.67.28.205", user: "game", password: "tito13101", database: "gamegta", port: "3406", connectionLimit: 5 }); async function migrate() { const dir = path.join(__dirname, "maps"); if (!fs.existsSync(dir)) { console.log("Kein maps/-Ordner gefunden - nichts zu migrieren."); process.exit(0); } const files = fs.readdirSync(dir).filter(f => f.endsWith(".json")); if (files.length === 0) { console.log("Keine .json-Dateien im maps/-Ordner gefunden."); process.exit(0); } console.log(`Gefunden: ${files.length} Map-Datei(en). Starte Migration...`); for (const file of files) { const filePath = path.join(dir, file); const raw = fs.readFileSync(filePath, "utf8"); let data; try { data = JSON.parse(raw); } catch (err) { console.error(`❌ ${file}: ungültiges JSON, übersprungen`, err.message); continue; } const name = data.name || path.basename(file, ".json"); await db.query( "INSERT INTO maps (name, data) VALUES (?, ?) ON DUPLICATE KEY UPDATE data=?", [name, JSON.stringify(data), JSON.stringify(data)] ); console.log(`✅ "${name}" migriert (${(raw.length / 1024).toFixed(1)} KB)`); } console.log("Migration abgeschlossen."); console.log("Du kannst den maps/-Ordner jetzt umbenennen/archivieren (z.B. maps_backup/), sobald du geprüft hast, dass alles im Spiel korrekt lädt."); process.exit(0); } migrate().catch(err => { console.error("Migration fehlgeschlagen:", err); process.exit(1); });