import type { APIRoute } from 'astro'; export const prerender = false; export const GET: APIRoute = async ({ locals, url }) => { if (locals.profile?.rol !== 'admin') { return new Response('Forbidden', { status: 403 }); } const raw = (url.searchParams.get('q') ?? '').trim(); // ponytail: strip PostgREST wildcards + comma so ilike/or() stay literal; FTS when catálogo crece >2k const q = raw.replace(/[%_,\\]/g, ' ').slice(0, 64); if (!q) { return Response.json([]); } const { data, error } = await locals.supabase .from('materiales') .select('id, nombre, numero_inventario') .ilike('nombre', `%${q}%`) .order('nombre', { ascending: true }) .limit(10); if (error) return new Response(error.message, { status: 500 }); const items = (data ?? []).map((m) => ({ id: m.id, label: m.numero_inventario ? `${m.nombre} — ${m.numero_inventario}` : m.nombre, })); return Response.json(items); };