// poi-store.js
// Der poi-store dient als zentrales Datenverzeichnis, das schwere POI-Objekte hocheffizient über ihre gid verwaltet 
// und so die Logik von der visuellen Darstellung trennt. Er stellt sicher, dass Daten nur einmal im Speicher existieren 
// und alle UI-Komponenten (Karte, BottomSheet) immer auf dieselbe, aktuelle Informationsquelle zugreifen.
const store = new Map();

/**
 * Registriert POI-Objekte im zentralen Speicher.
 * @param {Object[]} poiArray - Array von POI-Instanzen (z.B. ScStone).
 */
export function updatePoiStore(poiArray) {
    poiArray.forEach(poi => {
        if (poi && poi.gid) {
            // Wir speichern die Referenz unter der GID
            store.set(Number(poi.gid), poi);
        }
    });
}

export function getPoiData(gid) {
    return gid ? store.get(gid): null; 
    /*
    if (gid === undefined || gid === null) return null;
    
    // Versuch 1: Als Nummer
    let data = store.get(Number(gid));
    
    // Versuch 2: Falls GID ein String im Store wäre (Sicherheitsnetz)
    if (!data) data = store.get(String(gid));
    
    return data || null;
    */
}

/**
 * Aktualisiert oder fügt einen einzelnen POI im Store hinzu.
 * @param {Object} poiData - Das aktualisierte POI-Objekt.
 */
export function updateSinglePoiInStore(poiData) {
    if (poiData && poiData.gid) {
        // Bestehende Daten mit neuen Daten mergen oder komplett ersetzen
        const gid = Number(poiData.gid);
        const existing = store.get(gid) || {};
        
        // Wir speichern das neue Objekt (oder ein Merge aus alt und neu)
        store.set(gid, { ...existing, ...poiData });
        // console.log(`Store: POI ${gid} aktualisiert.`);
    }
}