// /pages/api/talas_v5_DB/gisLines/updateLineCoordinates.js
import getPool from "../../../../utils/mysqlPool"; // Singleton-Pool importieren

export default async function handler(req, res) {
  const pool = getPool(); // Singleton-Pool verwenden

  if (req.method !== "POST") {
    return res.status(405).json({ error: "Nur POST Methode erlaubt" });
  }

  const { idLD, idModul, newCoordinates } = req.body;
  if (!idLD || !idModul || !newCoordinates) {
    return res.status(400).json({ error: "Fehlende Daten" });
  }

  const newLineString = `LINESTRING(${newCoordinates.map((coord) => `${coord[0]} ${coord[1]}`).join(",")})`;

  const query = "UPDATE talas_v5.gis_lines SET points = ST_GeomFromText(?) WHERE idLD = ? AND idModul = ?;";

  let connection;

  try {
    // Hole eine Verbindung aus dem Pool
    connection = await pool.getConnection();

    // Beginne eine Transaktion
    await connection.beginTransaction();

    // Führe die Abfrage aus
    const [results] = await connection.query(query, [newLineString, idLD, idModul]);

    // Commit der Transaktion
    await connection.commit();

    console.log("Transaction Complete.");
    res.status(200).json({
      success: "Updated successfully.",
      affectedRows: results.affectedRows,
    });
  } catch (error) {
    // Rollback im Falle eines Fehlers
    if (connection) await connection.rollback();
    console.error("Fehler beim Aktualisieren der gis_lines:", error);
    res.status(500).json({ error: "Fehler beim Aktualisieren der gis_lines" });
  } finally {
    if (connection) connection.release();
  }
}
