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

85 lines
3.2 KiB
JavaScript

// -------------------------------------------------------------
// EINMALIGES MIGRATIONSSKRIPT
// Überträgt tiles.json und objectConfig.json in die neuen
// "tile_config"- und "object_config"-Tabellen der Datenbank.
//
// Ausführen mit: node migrate_configs.js
// (im selben Ordner wie server.js, NACHDEM die beiden Tabellen
// per SQL angelegt wurden)
// -------------------------------------------------------------
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() {
// --- TILES ---
const tilesPath = path.join(__dirname, "tiles.json");
if (fs.existsSync(tilesPath)) {
const tiles = JSON.parse(fs.readFileSync(tilesPath, "utf8"));
let count = 0;
for (const [id, tile] of Object.entries(tiles)) {
await db.query(
`INSERT INTO tile_config (id, name, color, collision) VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE name=?, color=?, collision=?`,
[
Number(id), tile.name || ("Tile " + id), tile.color || "#888888", tile.collision ? 1 : 0,
tile.name || ("Tile " + id), tile.color || "#888888", tile.collision ? 1 : 0
]
);
count++;
}
console.log(`✅ ${count} Tile(s) migriert.`);
} else {
console.log("Keine tiles.json gefunden - übersprungen.");
}
// --- OBJECTS ---
const objectsPath = path.join(__dirname, "objectConfig.json");
if (fs.existsSync(objectsPath)) {
const objects = JSON.parse(fs.readFileSync(objectsPath, "utf8"));
let count = 0;
for (const [type, obj] of Object.entries(objects)) {
await db.query(
`INSERT INTO object_config (type, name, color, width, height, collision, interactive, action)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE name=?, color=?, width=?, height=?, collision=?, interactive=?, action=?`,
[
type, obj.name || type, obj.color || "#888888", obj.width || 32, obj.height || 32,
obj.collision ? 1 : 0, obj.interactive ? 1 : 0, obj.action || null,
obj.name || type, obj.color || "#888888", obj.width || 32, obj.height || 32,
obj.collision ? 1 : 0, obj.interactive ? 1 : 0, obj.action || null
]
);
count++;
}
console.log(`✅ ${count} Objekt-Typ(en) migriert.`);
} else {
console.log("Keine objectConfig.json gefunden - übersprungen.");
}
console.log("Migration abgeschlossen.");
console.log("Du kannst tiles.json/objectConfig.json jetzt umbenennen/archivieren, 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);
});