75 lines
2.3 KiB
JavaScript
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);
|
|
}); |