/* =====================================================================
   Ortam degiskenleri ve calisma modu secimi.

   Uygulama uc veri kaynagindan birini kullanir; hangisinin kullanilacagi
   .env.local dosyasindaki degerlere gore OTOMATIK belirlenir:

     1. MySQL     — MYSQL_HOST + MYSQL_DATABASE tanimliysa (cPanel hosting)
     2. Supabase  — NEXT_PUBLIC_SUPABASE_URL + ANON_KEY tanimliysa
     3. Demo      — hicbiri yoksa; veriler data/db.json dosyasinda tutulur
   ===================================================================== */

export type DataMode = 'mysql' | 'supabase' | 'file';

/* ------------------------------- MySQL ------------------------------- */

export const MYSQL = {
  host: process.env.MYSQL_HOST ?? '',
  port: Number(process.env.MYSQL_PORT ?? 3306),
  user: process.env.MYSQL_USER ?? '',
  password: process.env.MYSQL_PASSWORD ?? '',
  database: process.env.MYSQL_DATABASE ?? '',
};

export function isMysqlConfigured(): boolean {
  return Boolean(MYSQL.host && MYSQL.database && MYSQL.user);
}

/* ------------------------------ Supabase ----------------------------- */

export const SUPABASE_URL = process.env.NEXT_PUBLIC_SUPABASE_URL ?? '';
export const SUPABASE_ANON_KEY = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY ?? '';
export const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY ?? '';

export function isSupabaseConfigured(): boolean {
  return Boolean(SUPABASE_URL && SUPABASE_ANON_KEY);
}

/* ------------------------------- secim ------------------------------- */

export function dataMode(): DataMode {
  if (isMysqlConfigured()) return 'mysql';
  if (isSupabaseConfigured()) return 'supabase';
  return 'file';
}

/* ------------------------------- oturum ------------------------------ */

export const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD ?? 'buel2026';
export const ADMIN_COOKIE = 'buel_session';

/**
 * Oturum cerezini imzalamakta kullanilir. Yayin ortaminda MUTLAKA
 * .env.local icinde tanimlanmalidir; tanimsizsa uygulama yalnizca
 * gelistirme modunda sabit bir deger kullanir.
 */
export const SESSION_SECRET =
  process.env.SESSION_SECRET ??
  (process.env.NODE_ENV === 'production' ? '' : 'gelistirme-ortami-icin-sabit-anahtar');

/** Oturum suresi (saniye) — varsayilan 12 saat. */
export const SESSION_MAX_AGE = Number(process.env.SESSION_MAX_AGE ?? 60 * 60 * 12);
