Files
vuelato/server/api/tracking/[id]/runs.get.ts
Alejandro Martinez b8906efc80
Some checks failed
ci / ci (22, ubuntu-latest) (push) Has been cancelled
Initial commit: Vuelato - buscador de vuelos
Nuxt 4 + Supabase + Flightics API. Incluye búsqueda de vuelos,
inspiraciones, watchlist, tracking de precios y mapa interactivo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:37:06 +02:00

37 lines
1.1 KiB
TypeScript

import { serverSupabaseServiceRole, serverSupabaseClient } from '#supabase/server'
export default defineEventHandler(async (event) => {
const client = await serverSupabaseClient(event)
const { data: { user } } = await client.auth.getUser()
if (!user) throw createError({ statusCode: 401, message: 'No autenticado' })
const id = getRouterParam(event, 'id')
if (!id) throw createError({ statusCode: 400, message: 'ID requerido' })
const query = getQuery(event)
const limit = Math.min(Number(query.limit) || 20, 100)
const offset = Number(query.offset) || 0
const supabase = serverSupabaseServiceRole(event)
const { data: search } = await supabase
.from('tracked_searches')
.select('id')
.eq('id', id)
.eq('user_id', user.id)
.single()
if (!search) throw createError({ statusCode: 404, message: 'No encontrado' })
const { data: runs, error } = await supabase
.from('search_runs')
.select('*')
.eq('tracked_search_id', id)
.order('created_at', { ascending: false })
.range(offset, offset + limit - 1)
if (error) throw createError({ statusCode: 500, message: error.message })
return runs || []
})