<?php

$host = 'localhost';
$dbname = 'nemesis';
$username = 'root';
$password = '';

// Connexion à la base de données
try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("La connexion a échoué : " . $e->getMessage());
}

// Récupérer les tables
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);

foreach ($tables as $table) {
    $columns = $pdo->query("DESCRIBE $table")->fetchAll(PDO::FETCH_ASSOC);
    
    // Nom de la classe (avec la première lettre en majuscule)
    $className = ucfirst($table);
    $properties = '';
    $methods = '';

    foreach ($columns as $column) {
        $columnName = $column['Field'];
        $columnType = $column['Type'];

        // Génération des propriétés
        $properties .= "    private \$$columnName;\n";

        // Génération des getters et setters
        $methods .= "\n    public function get" . ucfirst($columnName) . "() {\n";
        $methods .= "        return \$this->$columnName;\n";
        $methods .= "    }\n";

        $methods .= "\n    public function set" . ucfirst($columnName) . "(\$$columnName) {\n";
        $methods .= "        \$this->$columnName = \$$columnName;\n";
        $methods .= "    }\n";
    }

    // Création du contenu de la classe
    $classContent = "<?php\n\n";
    $classContent .= "class $className {\n\n";
    $classContent .= $properties;
    $classContent .= $methods;
    $classContent .= "}\n";

    // Enregistrement de la classe dans un fichier
    file_put_contents("$className.php", $classContent);
}

echo "Les classes ont été générées avec succès.";

?>
