// /pages/api/talas_v5_DB/bereich/readBereich.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 !== "GET") {
    return res.status(405).json({ error: "Nur GET Methode erlaubt" });
  }

  const { m: idMaps, idLocation } = req.query; // URL-Parameter "m" und "idLocation"

  if (!idMaps) {
    return res.status(400).json({ error: "idMaps (Parameter 'm') ist erforderlich" });
  }

  //let query = "SELECT * FROM location_coordinates WHERE idMaps = ?";
  /*   let query = `
  SELECT 
      l.name, 
      l.shortname, 
      lc.idMaps 
  FROM 
      talas_v5.location l
  JOIN 
      talas_v5.location_coordinates lc 
  ON 
      l.idlocation = lc.idlocation
  WHERE 
      lc.idMap = ?
    `; */
  /*   let query = `
 SELECT * FROM talas_v5.location l JOIN talas_v5.location_coordinates lc ON l.idlocation = lc.idlocation WHERE lc.idMaps=?;
`; */

  let query = `
SELECT 
    l.idlocation, 
    l.name AS location_name, 
    lc.idMaps, 
    a.name AS area_name,
    lc.x,
    lc.y
FROM 
    talas_v5.location l 
JOIN 
    talas_v5.location_coordinates lc 
    ON l.idlocation = lc.idlocation 
JOIN 
    talas_v5.area a 
    ON l.idarea = a.idarea 
WHERE 
  lc.idMaps = ?;
`;

  const queryParams = [idMaps];

  if (idLocation) {
    query += " AND idLocation = ?";
    queryParams.push(idLocation);
  }

  let connection;

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

    // SQL-Abfrage ausführen
    const [results] = await connection.query(query, queryParams);

    if (results.length > 0) {
      // Ergebnisse formatieren und zurückgeben
      const formattedResults = results.map((row) => ({
        idLocation: row.idlocation, // Prüfe hier auf korrekten Spaltennamen
        x: row.x,
        y: row.y,
        idMaps: row.idMaps,
        location_name: row.location_name, // Hinzufügen des Alias aus der SQL-Abfrage
        area_name: row.area_name, // Hinzufügen des Alias aus der SQL-Abfrage
      }));

      res.status(200).json(formattedResults);
    } else {
      res.status(404).json({ error: "Keine Koordinaten gefunden" });
    }
  } catch (error) {
    console.error("Fehler beim Abrufen der Koordinaten:", error);
    res.status(500).json({ error: "Interner Serverfehler beim Abrufen der Koordinaten" });
  } finally {
    if (connection) connection.release(); // Verbindung in den Pool zurückgeben
  }
}
