import type { VercelRequest, VercelResponse } from "@vercel/node";
import { createClient } from "@supabase/supabase-js";

// Prioritize VITE_SUPABASE_URL (main instance with actual data)
// Fall back to SUPABASE_URL (custom domain alias)
const SUPABASE_URL =
  process.env.VITE_SUPABASE_URL || process.env.SUPABASE_URL || "";
const SUPABASE_SERVICE_ROLE = process.env.SUPABASE_SERVICE_ROLE || "";

console.log("[Supabase Init] SUPABASE_URL configured:", !!SUPABASE_URL);
console.log(
  "[Supabase Init] SUPABASE_SERVICE_ROLE configured:",
  !!SUPABASE_SERVICE_ROLE,
);

export function getAdminClient() {
  if (!SUPABASE_URL) {
    console.error("[Supabase] SUPABASE_URL not set");
    throw new Error("SUPABASE_URL not set");
  }
  if (!SUPABASE_SERVICE_ROLE) {
    console.error("[Supabase] SUPABASE_SERVICE_ROLE not set");
    throw new Error("SUPABASE_SERVICE_ROLE not set");
  }

  console.log(
    "[Supabase] Creating client with URL:",
    SUPABASE_URL.substring(0, 30) + "...",
  );
  return createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE, {
    auth: { autoRefreshToken: false, persistSession: false },
  });
}

// Alias for backward compatibility
export const supabase = getAdminClient();

// Dummy default export for Vercel (this file is a utility, not a handler)
export default async function handler(req: VercelRequest, res: VercelResponse) {
  return res.status(501).json({ error: "Not a handler" });
}
