Files
bordervillegame/migrate_maps.js
T
2026-08-22 08:40:29 +02:00

75 lines
2.3 KiB
JavaScript

// -------------------------------------------------------------
// 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);
});