<?php

//<----------------------------------------------------------->
//<-------------------COPIA AI BRUXÃO------------------------->
//<-------------CONTATO: https://t.me/eonbry------------------>
//<-------------DEVELOPER: EMANUEL NASCIMENTO----------------->
//<----------------------------------------------------------->


// Configurações do banco de dados
$db_path = './a/ping/ping.db';

// Verificar se o arquivo do banco de dados existe
if (!file_exists($db_path)) {
    die("Erro: Arquivo do banco de dados não encontrado em: $db_path");
}

try {
    // Conectar ao banco de dados SQLite
    $db = new PDO("sqlite:$db_path");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "<!DOCTYPE html>
    <html lang='pt-BR'>
    <head>
        <meta charset='UTF-8'>
        <meta name='viewport' content='width=device-width, initial-scale=1.0'>
        <title>Listagem do Banco de Dados</title>
        <style>
            body { font-family: Arial, sans-serif; margin: 20px; background-color: #f4f4f4; }
            .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
            h1 { color: #333; border-bottom: 2px solid #007bff; padding-bottom: 10px; }
            h2 { color: #444; margin-top: 30px; }
            table { width: 100%; border-collapse: collapse; margin: 15px 0; }
            th { background-color: #007bff; color: white; padding: 12px; text-align: left; }
            td { padding: 10px; border-bottom: 1px solid #ddd; }
            tr:nth-child(even) { background-color: #f9f9f9; }
            tr:hover { background-color: #f1f1f1; }
            .count { background-color: #28a745; color: white; padding: 5px 10px; border-radius: 4px; }
            .error { color: #dc3545; background-color: #f8d7da; padding: 10px; border-radius: 4px; margin: 10px 0; }
            .empty { color: #6c757d; font-style: italic; }
        </style>
    </head>
    <body>
        <div class='container'>
            <h1>📊 Listagem do Banco de Dados</h1>
            <p><strong>Banco de dados:</strong> $db_path</p>
    ";
    
    // Obter lista de tabelas
    $query = "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'";
    $tables_result = $db->query($query);
    $tables = $tables_result->fetchAll(PDO::FETCH_COLUMN);
    
    if (empty($tables)) {
        echo "<div class='error'>Nenhuma tabela encontrada no banco de dados.</div>";
    } else {
        echo "<p>Total de tabelas: <span class='count'>" . count($tables) . "</span></p>";
        
        foreach ($tables as $table) {
            echo "<h2>📋 Tabela: $table</h2>";
            
            try {
                // Obter estrutura da tabela
                $structure = $db->query("PRAGMA table_info($table)");
                $columns = $structure->fetchAll(PDO::FETCH_ASSOC);
                
                if (!empty($columns)) {
                    echo "<h3>Estrutura da Tabela:</h3>";
                    echo "<table>";
                    echo "<tr><th>Coluna</th><th>Tipo</th><th>Pode ser NULL</th><th>Valor Padrão</th><th>Chave Primária</th></tr>";
                    
                    foreach ($columns as $col) {
                        echo "<tr>";
                        echo "<td><strong>{$col['name']}</strong></td>";
                        echo "<td>{$col['type']}</td>";
                        echo "<td>" . ($col['notnull'] ? 'NÃO' : 'SIM') . "</td>";
                        echo "<td>" . ($col['dflt_value'] ?: '-') . "</td>";
                        echo "<td>" . ($col['pk'] ? 'SIM' : 'NÃO') . "</td>";
                        echo "</tr>";
                    }
                    echo "</table>";
                }
                
                // Obter dados da tabela
                $data_result = $db->query("SELECT * FROM $table");
                $data = $data_result->fetchAll(PDO::FETCH_ASSOC);
                
                if (!empty($data)) {
                    echo "<h3>Dados (" . count($data) . " registros):</h3>";
                    echo "<table>";
                    
                    // Cabeçalho da tabela
                    echo "<tr>";
                    foreach (array_keys($data[0]) as $column_name) {
                        echo "<th>$column_name</th>";
                    }
                    echo "</tr>";
                    
                    // Dados
                    foreach ($data as $row) {
                        echo "<tr>";
                        foreach ($row as $value) {
                            // Tratar valores NULL
                            $display_value = ($value === null) ? 
                                '<span style="color: #999;">NULL</span>' : 
                                htmlspecialchars($value);
                            echo "<td>$display_value</td>";
                        }
                        echo "</tr>";
                    }
                    echo "</table>";
                } else {
                    echo "<p class='empty'>Nenhum registro encontrado nesta tabela.</p>";
                }
                
            } catch (Exception $e) {
                echo "<div class='error'>Erro ao acessar tabela '$table': " . htmlspecialchars($e->getMessage()) . "</div>";
            }
            
            echo "<hr>";
        }
    }
    
    // Informações adicionais do banco
    echo "<h2>🔍 Informações do Banco de Dados</h2>";
    
    // Versão do SQLite
    $version = $db->query('SELECT sqlite_version()')->fetchColumn();
    echo "<p><strong>Versão do SQLite:</strong> $version</p>";
    
    // Tamanho do arquivo
    $file_size = filesize($db_path);
    echo "<p><strong>Tamanho do arquivo:</strong> " . number_format($file_size) . " bytes (" . 
         round($file_size / 1024, 2) . " KB)</p>";
    
    // Data da última modificação
    $mod_time = filemtime($db_path);
    echo "<p><strong>Última modificação:</strong> " . date('d/m/Y H:i:s', $mod_time) . "</p>";
    
    echo "
        </div>
    </body>
    </html>
    ";
    
} catch (PDOException $e) {
    die("<div class='error'>Erro de conexão com o banco de dados: " . htmlspecialchars($e->getMessage()) . "</div>");
} catch (Exception $e) {
    die("<div class='error'>Erro: " . htmlspecialchars($e->getMessage()) . "</div>");
}
?>