fix: usar field IDs numéricos en query Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 59s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 59s
El filtro de empleados no funcionaba porque Metabase requiere IDs de campo numéricos (463 para empleado, 453 para id) en lugar de nombres de campo como strings.
This commit is contained in:
@@ -50,19 +50,22 @@ export default defineEventHandler(async (event): Promise<Contact[]> => {
|
||||
}
|
||||
|
||||
// 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<Contact[]> => {
|
||||
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<MetabaseResponse>(`${metabaseUrl}/api/dataset`, {
|
||||
method: 'POST',
|
||||
@@ -89,6 +94,8 @@ export default defineEventHandler(async (event): Promise<Contact[]> => {
|
||||
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) => {
|
||||
|
||||
Reference in New Issue
Block a user