<?php
/**
 * Script d'export complet de la base de données
 */

require 'vendor/autoload.php';

use App\Core\Database;

$timestamp = date('Ymd_His');
$outputFile = "bd_insuite_backbone_export_{$timestamp}.sql";

try {
    $pdo = Database::pdo();
    $dbName = $pdo->query('SELECT DATABASE()')->fetchColumn();
    
    echo "Export de la base de données: {$dbName}\n";
    echo "Fichier de sortie: {$outputFile}\n\n";
    
    $output = "-- Export de la base de données: {$dbName}\n";
    $output .= "-- Date: " . date('Y-m-d H:i:s') . "\n";
    $output .= "-- Généré par: export_database.php\n\n";
    $output .= "SET FOREIGN_KEY_CHECKS=0;\n";
    $output .= "SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO';\n";
    $output .= "SET time_zone = '+00:00';\n\n";
    
    // Récupérer toutes les tables
    $tables = $pdo->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN);
    
    echo "Tables trouvées: " . count($tables) . "\n";
    
    foreach ($tables as $table) {
        echo "Export de la table: {$table}...";
        
        // Structure de la table
        $createStmt = $pdo->query("SHOW CREATE TABLE `{$table}`")->fetch(PDO::FETCH_ASSOC);
        $output .= "-- --------------------------------------------------------\n";
        $output .= "-- Structure de la table `{$table}`\n";
        $output .= "-- --------------------------------------------------------\n\n";
        $output .= "DROP TABLE IF EXISTS `{$table}`;\n";
        $output .= $createStmt['Create Table'] . ";\n\n";
        
        // Données de la table
        $rows = $pdo->query("SELECT * FROM `{$table}`")->fetchAll(PDO::FETCH_ASSOC);
        
        if (count($rows) > 0) {
            $output .= "-- Données de la table `{$table}`\n\n";
            
            foreach ($rows as $row) {
                $cols = array_keys($row);
                $vals = array_map(function($v) use ($pdo) {
                    if (is_null($v)) {
                        return 'NULL';
                    }
                    return $pdo->quote($v);
                }, array_values($row));
                
                $colNames = '`' . implode('`, `', $cols) . '`';
                $values = implode(', ', $vals);
                $output .= "INSERT INTO `{$table}` ({$colNames}) VALUES ({$values});\n";
            }
            
            $output .= "\n";
            echo " " . count($rows) . " lignes\n";
        } else {
            echo " vide\n";
        }
    }
    
    $output .= "SET FOREIGN_KEY_CHECKS=1;\n";
    
    // Écrire le fichier
    file_put_contents($outputFile, $output);
    
    $fileSize = filesize($outputFile) / 1024;
    echo "\nExport terminé avec succès !\n";
    echo "Fichier: {$outputFile}\n";
    echo "Taille: " . round($fileSize, 2) . " KB\n";
    
} catch (Exception $e) {
    echo "Erreur lors de l'export: " . $e->getMessage() . "\n";
    exit(1);
}
