-- Script para crear las tablas de consultas
-- Ejecutar este script en la base de datos MySQL

-- Tabla de resumen de consultas
CREATE TABLE IF NOT EXISTS consultas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NOT NULL,
  total_nits INT NOT NULL,
  consultas_usadas INT NOT NULL DEFAULT 0,
  nits_encontrados INT NOT NULL DEFAULT 0,
  nits_no_encontrados INT NOT NULL DEFAULT 0,
  estado ENUM('pendiente', 'procesando', 'completada', 'error', 'cancelada') NOT NULL DEFAULT 'procesando',
  error_message TEXT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  completed_at TIMESTAMP NULL,
  INDEX idx_user_id (user_id),
  INDEX idx_created_at (created_at),
  INDEX idx_estado (estado),
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla de detalle de consultas (cada NIT con su resultado)
-- Los campos de nombre vienen separados desde el scraping para permitir exportar Excel
-- con la misma estructura que la versión desktop
CREATE TABLE IF NOT EXISTS consulta_detalles (
  id INT AUTO_INCREMENT PRIMARY KEY,
  consulta_id INT NOT NULL,
  nit VARCHAR(20) NOT NULL,
  primer_nombre VARCHAR(255) NULL,
  otros_nombres VARCHAR(255) NULL,
  primer_apellido VARCHAR(255) NULL,
  segundo_apellido VARCHAR(255) NULL,
  razon_social VARCHAR(500) NULL,
  encontrado BOOLEAN NOT NULL DEFAULT FALSE,
  estado ENUM('pendiente', 'procesando', 'completado', 'error') NOT NULL DEFAULT 'pendiente',
  error_message TEXT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_consulta_id (consulta_id),
  INDEX idx_nit (nit),
  INDEX idx_estado (estado),
  FOREIGN KEY (consulta_id) REFERENCES consultas(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

