Files
dtic-DIIAA/tools/prueba_simple_buscador.rb
T

102 lines
3.0 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
# tools/prueba_simple_buscador.rb — Prueba simplificada del sistema de búsqueda
# ================================================================================
# Prueba básica del sistema de búsqueda para identificar problemas
require 'pg'
require 'yaml'
# Cargar configuración
config_path = File.join(__dir__, 'config', 'database.yml')
config = YAML.load_file(config_path)['development']
# Conectar a PostgreSQL
puts "🔌 Conectando a PostgreSQL..."
conn = PG.connect(
host: config['host'],
port: config['port'],
dbname: config['database'],
user: config['username'],
password: config['password']
)
puts "✅ Conexión establecida\n\n"
# Prueba 1: Consulta SQL simple
puts "1. Consulta SQL simple (entradas):"
resultados = conn.exec("SELECT id, descripcion, estado FROM bitacoras.entradas LIMIT 3")
resultados.each do |row|
puts " • #{row['id']}: #{row['descripcion'][0..50]}... (#{row['estado']})"
end
# Prueba 2: Búsqueda con LIKE
puts "\n2. Búsqueda con LIKE 'dashboard':"
resultados = conn.exec_params(
"SELECT id, descripcion, estado FROM bitacoras.entradas WHERE descripcion ILIKE $1 LIMIT 3",
['%dashboard%']
)
if resultados.ntuples > 0
resultados.each do |row|
puts " • #{row['id']}: #{row['descripcion'][0..50]}... (#{row['estado']})"
end
else
puts " • No se encontraron resultados"
end
# Prueba 3: Consulta con JOIN
puts "\n3. Consulta con JOIN (entradas + nodos):"
sql = <<-SQL
SELECT e.id, e.descripcion, e.estado, n.nombre as nodo_nombre
FROM bitacoras.entradas e
LEFT JOIN bitacoras.nodos n ON e.nodo_id = n.id
WHERE e.estado = '✅'
LIMIT 3
SQL
resultados = conn.exec(sql)
if resultados.ntuples > 0
resultados.each do |row|
puts " • #{row['id']}: #{row['descripcion'][0..50]}... (#{row['estado']}) - Nodo: #{row['nodo_nombre']}"
end
else
puts " • No se encontraron entradas completadas"
end
# Prueba 4: Full-text search (si existe el índice)
puts "\n4. Probando full-text search:"
begin
# Primero verificar si existe la extensión
conn.exec("CREATE EXTENSION IF NOT EXISTS pg_trgm")
# Búsqueda simple con trigram
resultados = conn.exec_params(
"SELECT id, descripcion, estado FROM bitacoras.entradas WHERE descripcion % $1 LIMIT 3",
['sistema']
)
if resultados.ntuples > 0
puts " • Búsqueda trigram encontrada #{resultados.ntuples} resultados"
resultados.each do |row|
puts " - #{row['id']}: #{row['descripcion'][0..50]}..."
end
else
puts " • No se encontraron resultados con trigram"
end
rescue => e
puts " • Error en full-text search: #{e.message}"
end
# Prueba 5: Estadísticas
puts "\n5. Estadísticas de la base de datos:"
tablas = ['nodos', 'bitacoras', 'temas', 'entradas']
tablas.each do |tabla|
count = conn.exec("SELECT COUNT(*) as total FROM bitacoras.#{tabla}")[0]['total']
puts " • #{tabla}: #{count} registros"
end
conn.close
puts "\n🔌 Conexión cerrada"
puts "\n✅ Prueba completada"