import { createClient } from '@supabase/supabase-js';

const url = process.env.SUPABASE_URL;
const key = process.env.SUPABASE_SERVICE_KEY;

const opts = { auth: { persistSession: false, autoRefreshToken: false } };

// Mit Keys: echte Clients. Ohne (DB-loser core, auth:'local'): Clients bleiben
// null; die Aufrufer (auth/stats/users) sind null-sicher und nutzen den lokalen
// Provider. DB-Plugins (dialog) laufen ohnehin nur mit Supabase. Den Fail-Fast
// für auth:'supabase' macht index.js (das kennt die config) — supabase.js bleibt
// bewusst config-frei, damit Unit-Tests es ohne CMS_CONFIG importieren können.
let _supabase = null;
let _supabaseAuth = null;
if (url && key) {
  // Daten-Client: Service-Role-Key, umgeht RLS. NUR für DB-Zugriffe (from/insert/…).
  // Wichtig: hier niemals signInWithPassword aufrufen — das schaltet den
  // Authorization-Header des Clients prozessweit auf das User-Token um (SIGNED_IN),
  // wodurch anschließende Inserts als role=authenticated laufen und an RLS scheitern.
  _supabase = createClient(url, key, opts);
  // Eigener Client nur für Auth (Login, Token-Prüfung). Getrennt, damit ein
  // signInWithPassword den Daten-Client oben nicht „vergiftet". Niemals ins Frontend.
  _supabaseAuth = createClient(url, key, opts);
} else {
  console.warn('supabase.js: kein SUPABASE_URL/SERVICE_KEY — DB-loser Betrieb (auth: local erwartet).');
}

export const supabase = _supabase;
export const supabaseAuth = _supabaseAuth;
