import { createError, getQuery } from "h3"; import { requireAuth0User } from "../../utils/auth0"; import { getSupabaseServiceClient } from "../../utils/supabase"; type DesignSummary = { id: string; name: string; template_id: string; preview_url: string | null; preview_path: string | null; created_at: string | null; updated_at: string | null; }; export default defineEventHandler(async (event) => { const user = await requireAuth0User(event); const supabase = getSupabaseServiceClient(); const query = getQuery(event); const limit = query.limit ? Number.parseInt(String(query.limit), 10) : 20; const sanitizedLimit = Number.isFinite(limit) && limit > 0 ? Math.min(limit, 100) : 20; const response = await supabase .from("designs") .select("id, name, template_id, preview_url, preview_path, created_at, updated_at") .eq("user_id", user.sub) .order("updated_at", { ascending: false }) .limit(sanitizedLimit); if (response.error) { throw createError({ statusCode: 500, statusMessage: `Failed to fetch designs: ${response.error.message}`, }); } return (response.data as DesignSummary[]) ?? []; });