85 lines
3.2 KiB
JavaScript
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);
|
|
});
|