import type { APIRoute } from 'astro'; const json = (body: unknown, status = 200) => new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } }); export const GET: APIRoute = async ({ params, locals }) => { if (!locals.user) return json({ error: 'no autenticado' }, 401); if (locals.profile?.rol !== 'admin') return json({ error: 'no autorizado' }, 403); const id = Number(params.id); if (!Number.isInteger(id) || id <= 0) return json({ error: 'id inválido' }, 400); const prestamoQ = locals.supabase .from('solicitudes') .select( 'id, estado, fecha_solicitud, fecha_aprobacion, fecha_devolucion_estimada, fecha_devolucion_real, notas, maestro_responsable, alumno:profiles!alumno_id(id, nombre, email, matricula), items:solicitud_items(id, cantidad, descripcion, material:materiales(id, nombre, numero_inventario, trackeado_por_unidad), material_unidad:material_unidades(id, etiqueta))' ) .eq('id', id) .maybeSingle(); const logQ = locals.supabase .from('audit_log') .select('*') .eq('solicitud_id', id) .order('at', { ascending: false }) .limit(20); const [{ data: prestamo, error: pErr }, { data: audit_log, error: lErr }] = await Promise.all([prestamoQ, logQ]); if (pErr) return json({ error: pErr.message }, 500); if (!prestamo) return json({ error: 'no encontrado' }, 404); return json({ prestamo, audit_log: lErr ? [] : (audit_log ?? []) }); };