Feature: agregar filtros de clientes y ubicaciones en Informe de Ingresos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
- Crear endpoint /api/clientes para obtener clientes desde Supabase - Crear endpoint /api/postgres/query para ejecutar queries SQL - Crear componente ClienteMultiSelector con búsqueda y filtro por ubicación - Agregar filtros de clientes, ubicaciones y calidades en informe-ingresos.vue - Cargar opciones de filtros desde Metabase (query ID 53) - Actualizar detección de cambios pendientes con nuevos filtros - Enviar cliente_ids, ubicaciones y calidades al endpoint de Metabase - Componente con formato de cédula y ordenamiento por nombre - Búsqueda por nombre, cédula o ubicación - Contador de selección y botón limpiar todo - Botones rápidos para seleccionar por ubicación
This commit is contained in:
33
nuxt4-app/server/api/clientes/index.get.ts
Normal file
33
nuxt4-app/server/api/clientes/index.get.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Get all clients from Supabase facturador database
|
||||
* Returns: id, name, ubicacion for use in filters
|
||||
*/
|
||||
export default defineEventHandler(async () => {
|
||||
try {
|
||||
// Query clientes table ordered by name
|
||||
const query = `
|
||||
SELECT
|
||||
id,
|
||||
name,
|
||||
ubicacion,
|
||||
cedula,
|
||||
telefono,
|
||||
email
|
||||
FROM clientes
|
||||
ORDER BY name ASC
|
||||
`
|
||||
|
||||
const result = await $fetch('/api/postgres/query', {
|
||||
method: 'POST',
|
||||
body: { query }
|
||||
})
|
||||
|
||||
return result
|
||||
} catch (error: any) {
|
||||
console.error('[API] Failed to fetch clientes:', error)
|
||||
throw createError({
|
||||
statusCode: error.statusCode || 500,
|
||||
statusMessage: error.statusMessage || 'Failed to fetch clientes'
|
||||
})
|
||||
}
|
||||
})
|
||||
34
nuxt4-app/server/api/postgres/query.post.ts
Normal file
34
nuxt4-app/server/api/postgres/query.post.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Execute a raw SQL query against Supabase/PostgreSQL
|
||||
* This is a server-only endpoint for internal API use
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const body = await readBody(event)
|
||||
const { query, params = [] } = body
|
||||
|
||||
if (!query) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: 'Query is required'
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
// Execute query using MCP postgres tool
|
||||
const result = await $fetch('/__mcp/mcp__postgres__query', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
query,
|
||||
params
|
||||
}
|
||||
})
|
||||
|
||||
return result
|
||||
} catch (error: any) {
|
||||
console.error('[Postgres] Query failed:', error)
|
||||
throw createError({
|
||||
statusCode: error.statusCode || 500,
|
||||
statusMessage: error.statusMessage || 'Database query failed'
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user