import Link from "next/link";
import { isDatabaseConfigured, testDatabaseConnection } from "@/lib/db";

export const dynamic = "force-dynamic";

export default async function DatabaseCheckPage() {
  const configured = isDatabaseConfigured();
  const result = configured
    ? await testDatabaseConnection()
    : { ok: false as const, message: "La base de données n'est pas configurée. Le site utilise actuellement des données de démonstration." };

  return (
    <main className="tech-page">
      <div className="tech-card">
        <Link className="back-link" href="/">← Retour à SnapTrot</Link>
        <div className="tech-brand">Snap<span>Trot</span><small>.fr</small></div>
        <p className="tech-kicker">DIAGNOSTIC TECHNIQUE</p>
        <h1>Connexion à la base FoalX</h1>
        <p className="tech-description">Ce test exécute uniquement une requête en lecture : <code>SELECT 1</code>. Aucune donnée n'est modifiée.</p>
        <div className={`tech-status ${result.ok ? "success" : "warning"}`}>
          <span className="tech-status-dot" />
          <div><strong>{result.ok ? "Connexion confirmée" : configured ? "Connexion non confirmée" : "Configuration requise"}</strong><p>{result.message}</p></div>
        </div>
        {result.ok && "serverTime" in result && (
          <div className="tech-detail"><span>Heure renvoyée par la base</span><strong>{result.serverTime}</strong></div>
        )}
        <div className="tech-checklist">
          <strong>Avant la connexion à la production</strong>
          <ul>
            <li>Créer un utilisateur SQL dédié en lecture seule.</li>
            <li>Autoriser uniquement l'adresse IP du serveur applicatif.</li>
            <li>Utiliser TLS si la base est distante et le fournisseur le permet.</li>
            <li>Ne jamais placer les identifiants dans le code client ou Git.</li>
          </ul>
        </div>
        <p className="tech-footnote">Cette page masque volontairement les erreurs SQL détaillées pour éviter d'exposer la configuration de l'hébergement.</p>
      </div>
    </main>
  );
}
