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