From 0d4b5c35061d82cc07380f27e3e44ad4652b1919 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Tue, 30 Sep 2025 00:45:13 +0000 Subject: [PATCH] Create interests endpoint for Vercel cgen-d9a0d994326e4ad3a4efd0d486d4049f --- api/interests.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 api/interests.ts diff --git a/api/interests.ts b/api/interests.ts new file mode 100644 index 00000000..496ec498 --- /dev/null +++ b/api/interests.ts @@ -0,0 +1,27 @@ +import type { VercelRequest, VercelResponse } from "@vercel/node"; +import { getAdminClient } from "./_supabase"; + +export default async function handler(req: VercelRequest, res: VercelResponse) { + if (req.method !== "POST") return res.status(405).json({ error: "Method not allowed" }); + const { user_id, interests } = (req.body || {}) as { user_id?: string; interests?: string[] }; + if (!user_id || !Array.isArray(interests)) return res.status(400).json({ error: "invalid payload" }); + + try { + const admin = getAdminClient(); + const { error: delErr } = await admin.from("user_interests").delete().eq("user_id", user_id); + if (delErr) return res.status(500).json({ error: delErr.message }); + + if (interests.length) { + const rows = interests.map((interest) => ({ user_id, interest })); + const { error } = await admin.from("user_interests").insert(rows); + if (error) return res.status(500).json({ error: error.message }); + } + + return res.json({ ok: true }); + } catch (e: any) { + if (/SUPABASE_/.test(String(e?.message || ""))) { + return res.status(500).json({ error: `Server misconfigured: ${e.message}` }); + } + return res.status(500).json({ error: e?.message || String(e) }); + } +}