| // 验证 supabase-js + secret key 能读写(RLS 绕过)+ REST(443) 连通。 | |
| import "dotenv/config"; | |
| import { createClient } from "@supabase/supabase-js"; | |
| const url = process.env.SUPABASE_URL; | |
| const key = process.env.SUPABASE_SERVICE_KEY; | |
| if (!url || !key) { | |
| console.error("SUPABASE_URL / SUPABASE_SERVICE_KEY required"); | |
| process.exit(1); | |
| } | |
| const c = createClient(url, key, { auth: { persistSession: false, autoRefreshToken: false } }); | |
| const stamp = `selftest-${Date.now()}`; | |
| const up = await c.from("app_settings").upsert({ key: "selftest.sync", value: stamp, updated_at: new Date().toISOString() }, { onConflict: "key" }); | |
| console.log("upsert error:", up.error?.message ?? "none"); | |
| const rd = await c.from("app_settings").select("*").eq("key", "selftest.sync"); | |
| console.log("read back:", rd.data?.[0]?.value === stamp ? "OK match" : `MISMATCH (${JSON.stringify(rd.data)})`, rd.error?.message ?? ""); | |
| const del = await c.from("app_settings").delete().eq("key", "selftest.sync"); | |
| console.log("cleanup error:", del.error?.message ?? "none"); | |
| console.log("supabase round-trip done"); | |