From 261fbc19e221d254fce3b4f64cef17479fcf76a2 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Sat, 18 Oct 2025 01:38:52 +0000 Subject: [PATCH] Add admin storage ensure endpoint cgen-0dbc7dc9a1f943fea7af98008badf10c --- server/index.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/server/index.ts b/server/index.ts index 0fd9c93b..0faad354 100644 --- a/server/index.ts +++ b/server/index.ts @@ -200,6 +200,35 @@ export function createServer() { } }); + // Storage administration endpoints (service role) + app.post("/api/storage/ensure-buckets", async (_req, res) => { + if (!adminSupabase) { + return res.status(500).json({ error: "Supabase admin client unavailable" }); + } + try { + const targets = [ + { name: "avatars", public: true }, + { name: "banners", public: true }, + ]; + const { data: buckets } = await (adminSupabase as any).storage.listBuckets(); + const existing = new Set((buckets || []).map((b: any) => b.name)); + const created: string[] = []; + for (const t of targets) { + if (!existing.has(t.name)) { + const { error } = await (adminSupabase as any).storage.createBucket(t.name, { public: t.public }); + if (error) { + console.warn("Failed to create bucket", t.name, error); + } else { + created.push(t.name); + } + } + } + return res.json({ ok: true, created }); + } catch (e: any) { + return res.status(500).json({ error: e?.message || String(e) }); + } + }); + // Admin-backed API (service role) try { const ownerEmail = (