import { createClient as createSupabaseClient } from "@supabase/supabase-js";
import { getSupabaseClient } from "@/lib/supabase";

export function createAdminClient() {
  const url = process.env.NEXT_PUBLIC_SUPABASE_URL ?? process.env.SUPABASE_URL;
  /* Sem fallback para NEXT_PUBLIC_*: aquele prefixo manda a variavel para o
     navegador, e a chave de servico ignora todo o RLS. Aceitar os dois nomes
     era o que mantinha o padrao errado vivo. */
  const serviceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;

  if (!url || !serviceKey) {
    throw new Error("Supabase env vars are missing for admin client.");
  }

  return createSupabaseClient(url, serviceKey.trim(), {
    auth: { autoRefreshToken: false, persistSession: false },
  });
}

/*
  O cliente que as paginas da loja usam no servidor: a chave de servico, para
  o visitante nao precisar ler produto nenhum pela API (migration 160 tira
  dele preco e custo). Num ambiente sem a chave (teste local sem .env), cai
  na publica, como era antes.
*/
export function clienteDoServidor() {
  try {
    return createAdminClient();
  } catch {
    return getSupabaseClient();
  }
}
