diff --git a/nuxt4-app/server/api/metabase/panorama.post.ts b/nuxt4-app/server/api/metabase/panorama.post.ts index d400a56..0342bc9 100644 --- a/nuxt4-app/server/api/metabase/panorama.post.ts +++ b/nuxt4-app/server/api/metabase/panorama.post.ts @@ -18,15 +18,21 @@ export default defineEventHandler(async (event) => { const cards: Record = {} + console.log('[Panorama] Available cards:', allCards.map((c: any) => ({ id: c.id, name: c.name }))) + console.log('[Panorama] Looking for queries:', queryNames) + for (const [key, name] of Object.entries(queryNames)) { const card = allCards.find((c: any) => c.name === name) if (!card) { console.warn(`[Panorama] Query not found: ${name}`) } else { + console.log(`[Panorama] Found card ${key}: ${name} (ID: ${card.id})`) cards[key] = card } } + console.log('[Panorama] Cards to execute:', Object.keys(cards)) + // Build parameters array for Metabase queries // Convertir null a string vacĂ­o para que las queries usen NULLIF correctamente const parameters = [ @@ -55,12 +61,17 @@ export default defineEventHandler(async (event) => { } try { - console.log(`[Panorama] Executing query: ${name} (ID: ${cardId})`) + console.log(`[Panorama] Executing query: ${name} (ID: ${cardId}) with params:`, JSON.stringify(parameters)) const result = await executeCardQuery(cardId, parameters) - console.log(`[Panorama] Query ${name} returned ${result.data?.rows?.length || 0} rows`) + console.log(`[Panorama] Query ${name} result:`, { + hasData: !!result.data, + rowsLength: result.data?.rows?.length || 0, + colsLength: result.data?.cols?.length || 0, + firstRow: result.data?.rows?.[0] || null + }) return result } catch (error: any) { - console.error(`[Panorama] Error executing ${name}:`, error.message) + console.error(`[Panorama] Error executing ${name}:`, error.message, error.stack) return defaultValue } } @@ -89,7 +100,18 @@ export default defineEventHandler(async (event) => { // Transform Metabase responses to objects for easier frontend consumption const transformSingleRow = (result: any) => { - if (!result.data?.rows?.[0] || !result.data?.cols) return {} + console.log('[Panorama] transformSingleRow input:', { + hasData: !!result.data, + hasRows: !!result.data?.rows, + hasCols: !!result.data?.cols, + rowsLength: result.data?.rows?.length, + colsLength: result.data?.cols?.length + }) + + if (!result.data?.rows?.[0] || !result.data?.cols) { + console.warn('[Panorama] transformSingleRow: Missing data, rows, or cols') + return {} + } const row = result.data.rows[0] const cols = result.data.cols @@ -99,20 +121,34 @@ export default defineEventHandler(async (event) => { obj[col.name] = row[index] }) + console.log('[Panorama] transformSingleRow output:', obj) return obj } const transformMultipleRows = (result: any) => { - if (!result.data?.rows || !result.data?.cols) return [] + console.log('[Panorama] transformMultipleRows input:', { + hasData: !!result.data, + hasRows: !!result.data?.rows, + hasCols: !!result.data?.cols, + rowsLength: result.data?.rows?.length + }) + + if (!result.data?.rows || !result.data?.cols) { + console.warn('[Panorama] transformMultipleRows: Missing data, rows, or cols') + return [] + } const cols = result.data.cols - return result.data.rows.map((row: any[]) => { + const transformed = result.data.rows.map((row: any[]) => { const obj: any = {} cols.forEach((col: any, index: number) => { obj[col.name] = row[index] }) return obj }) + + console.log('[Panorama] transformMultipleRows output:', transformed.length, 'rows') + return transformed } // Return all data in a structured format