<?php
require_once './config.php';

echo '<h1>Test de la base de données</h1>';

try {
    // 1. Vérifier les permissions du fichier
    $dbFile = __DIR__ . '/database/association.db';
    echo '<h2>Vérification des permissions</h2>';
    echo 'Chemin de la base de données: ' . $dbFile . '<br>';
    echo 'Le fichier existe: ' . (file_exists($dbFile) ? 'Oui' : 'Non') . '<br>';
    echo 'Le fichier est accessible en lecture: ' . (is_readable($dbFile) ? 'Oui' : 'Non') . '<br>';
    echo 'Le fichier est accessible en écriture: ' . (is_writable($dbFile) ? 'Oui' : 'Non') . '<br>';
    
    // 2. Connexion à la base de données
    echo '<h2>Test de connexion</h2>';
    $db = new PDO('sqlite:' . $dbFile);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Connexion à la base de données réussie<br>';
    
    // 3. Test de lecture
    echo '<h2>Test de lecture</h2>';
    $query = "SELECT name FROM sqlite_master WHERE type='table'";
    $stmt = $db->query($query);
    $tables = $stmt->fetchAll(PDO::FETCH_COLUMN);
    
    echo 'Tables trouvées dans la base de données:<br>';
    echo '<ul>';
    foreach ($tables as $table) {
        echo '<li>' . $table . '</li>';
    }
    echo '</ul>';
    
    // 4. Vérifier la structure de la table settings
    echo '<h2>Structure de la table settings</h2>';
    if (in_array('settings', $tables)) {
        $query = "PRAGMA table_info(settings)";
        $stmt = $db->query($query);
        $columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo 'Colonnes de la table settings:<br>';
        echo '<ul>';
        foreach ($columns as $column) {
            echo '<li>' . $column['name'] . ' (' . $column['type'] . ')</li>';
        }
        echo '</ul>';
        
        // 5. Lire les données actuelles
        echo '<h2>Données actuelles dans settings</h2>';
        $query = "SELECT * FROM settings";
        $stmt = $db->query($query);
        $settings = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        if (count($settings) > 0) {
            echo '<pre>';
            print_r($settings);
            echo '</pre>';
        } else {
            echo 'Aucune donnée trouvée dans la table settings';
        }
    } else {
        echo 'La table settings n\'existe pas dans la base de données';
    }
    
    // 6. Test d'écriture
    echo '<h2>Test d\'écriture</h2>';
    
    // 6.1. Supprimer d'abord toutes les données
    $query = "DELETE FROM settings";
    $result = $db->exec($query);
    echo 'Suppression des données existantes: OK<br>';
    
    // 6.2. Insérer un nouveau test
    $query = "INSERT INTO settings (name, email, created_at, updated_at) VALUES (?, ?, ?, ?)";
    $stmt = $db->prepare($query);
    $now = date('Y-m-d H:i:s');
    $result = $stmt->execute(['Association Test', 'test@example.com', $now, $now]);
    echo 'Insertion de nouvelles données: ' . ($result ? 'OK' : 'ÉCHEC') . '<br>';
    
    // 6.3. Vérifier l'insertion
    $query = "SELECT * FROM settings";
    $stmt = $db->query($query);
    $newSettings = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo 'Nouvelles données dans settings:<br>';
    echo '<pre>';
    print_r($newSettings);
    echo '</pre>';
    
    // Fermer la connexion
    $db = null;
    
} catch (PDOException $e) {
    echo '<div style="color: red; font-weight: bold;">Erreur: ' . $e->getMessage() . '</div>';
}
?>
