// Validation des variables d'environnement au démarrage.
// Échoue vite si une variable critique est manquante.

const REQUIRED = ['DATABASE_URL', 'JWT_SECRET', 'OPENAI_API_KEY'] as const;

const OPTIONAL_WARN = [
  'STRIPE_SECRET_KEY',
  'STRIPE_WEBHOOK_SECRET',
  'STRIPE_PRICE_ID_ESSENTIAL',
  'STRIPE_PRICE_ID_PREMIUM',
  'MINIO_ENDPOINT',
  'MINIO_PORT',
  'MINIO_ACCESS_KEY',
  'MINIO_SECRET_KEY',
  'MINIO_BUCKET',
  'RESEND_API_KEY',
  'FRONTEND_URL',
] as const;

type Logger = Pick<Console, 'error' | 'warn'>;

export function validateEnv(log: Logger = console): void {
  const missing = REQUIRED.filter((k) => !process.env[k]);
  if (missing.length > 0) {
    log.error(`Variables d'environnement manquantes: ${missing.join(', ')}`);
    process.exit(1);
  }

  if (process.env.JWT_SECRET && process.env.JWT_SECRET.length < 32) {
    log.warn(
      'JWT_SECRET fait moins de 32 caractères, utilisez une clé plus longue en production.'
    );
  }

  const missingOptional = OPTIONAL_WARN.filter((k) => !process.env[k]);
  if (missingOptional.length > 0) {
    log.warn(`Variables optionnelles non définies: ${missingOptional.join(', ')}`);
  }
}
