diff --git a/nuxt4/server/api/contacts/index.get.ts b/nuxt4/server/api/contacts/index.get.ts index 1c90e52..d0e561d 100644 --- a/nuxt4/server/api/contacts/index.get.ts +++ b/nuxt4/server/api/contacts/index.get.ts @@ -50,19 +50,22 @@ export default defineEventHandler(async (event): Promise => { } // Construir filtros para la query + // Nota: Metabase requiere field IDs numéricos, no nombres de campo + // IDs obtenidos de la metadata de la tabla 15 (Clientes): + // - id: 453, empleado: 463 const filters: unknown[] = [] // Filtro de empleados (por defecto true) const empleadoFilter = query.empleado !== 'false' if (empleadoFilter) { - filters.push(['=', ['field', 'empleado', { 'base-type': 'type/Boolean' }], true]) + filters.push(['=', ['field', 463, null], true]) } // Filtro por ID exacto if (query.id) { const idNum = parseInt(query.id as string) if (!isNaN(idNum)) { - filters.push(['=', ['field', 'id', { 'base-type': 'type/BigInteger' }], idNum]) + filters.push(['=', ['field', 453, null], idNum]) } } @@ -72,13 +75,15 @@ export default defineEventHandler(async (event): Promise => { type: 'query', query: { 'source-table': tableId, - 'order-by': [['asc', ['field', 'id', { 'base-type': 'type/BigInteger' }]]], + 'order-by': [['asc', ['field', 453, null]]], filter: filters.length > 0 ? (filters.length === 1 ? filters[0] : ['and', ...filters]) : undefined } } + console.log('📊 Query a Metabase:', JSON.stringify(metabaseQuery, null, 2)) + try { const response = await $fetch(`${metabaseUrl}/api/dataset`, { method: 'POST', @@ -89,6 +94,8 @@ export default defineEventHandler(async (event): Promise => { body: metabaseQuery }) + console.log('📊 Respuesta Metabase - filas:', response.data?.rows?.length || 0) + // Mapear columnas a objetos const cols = response.data.cols.map((col) => col.name) const contacts: Contact[] = response.data.rows.map((row) => {