From 29c91985f982fbb9f94679388bd3aa6107c5aacb Mon Sep 17 00:00:00 2001 From: marsalva Date: Fri, 13 Feb 2026 09:50:27 +0000 Subject: [PATCH] Actualizar server.js --- server.js | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/server.js b/server.js index c1ccde8..85d4704 100644 --- a/server.js +++ b/server.js @@ -413,7 +413,7 @@ app.get("/discovery/keys/:provider", authMiddleware, async (req, res) => { try { const { provider } = req.params; - // CAMBIO: Añadimos 'ORDER BY id DESC LIMIT 1' para coger solo el último + // Buscamos solo el último servicio para que la lista sea corta y real const rawServices = await pool.query( "SELECT raw_data FROM scraped_services WHERE owner_id=$1 AND provider=$2 ORDER BY id DESC LIMIT 1", [req.user.accountId, provider] @@ -423,19 +423,20 @@ app.get("/discovery/keys/:provider", authMiddleware, async (req, res) => { "SELECT original_key, target_key, is_ignored FROM variable_mappings WHERE owner_id=$1 AND provider=$2", [req.user.accountId, provider] ); + const mapDict = {}; - mappings.rows.forEach(m => mapDict[m.original_key] = m); + mappings.rows.forEach(m => { + mapDict[m.original_key] = m; + }); const discoverySet = new Set(); const samples = {}; - // Como solo hay 1 fila (la última), el bucle es corto y limpio rawServices.rows.forEach(row => { const data = row.raw_data; if (data && typeof data === 'object') { Object.keys(data).forEach(k => { discoverySet.add(k); - // Guardamos el valor para mostrarlo de ejemplo if (!samples[k]) samples[k] = data[k]; }); } @@ -450,18 +451,9 @@ app.get("/discovery/keys/:provider", authMiddleware, async (req, res) => { res.json({ ok: true, keys: result }); - } catch (e) { res.status(500).json({ ok: false, error: e.message }); } -}); - - const result = Array.from(discoverySet).map(key => ({ - original: key, - sample: samples[key] || "(Vacío)", - mappedTo: mapDict[key]?.target_key || "", - ignored: mapDict[key]?.is_ignored || false - })).sort((a, b) => a.original.localeCompare(b.original)); - - res.json({ ok: true, keys: result }); - } catch (e) { res.status(500).json({ ok: false, error: e.message }); } + } catch (e) { + res.status(500).json({ ok: false, error: e.message }); + } }); app.post("/discovery/save", authMiddleware, async (req, res) => { @@ -479,7 +471,12 @@ app.post("/discovery/save", authMiddleware, async (req, res) => { } await client.query('COMMIT'); res.json({ ok: true }); - } catch (e) { await client.query('ROLLBACK'); res.status(500).json({ ok: false, error: e.message }); } finally { client.release(); } + } catch (e) { + await client.query('ROLLBACK'); + res.status(500).json({ ok: false, error: e.message }); + } finally { + client.release(); + } }); // =========================