#!/usr/bin/env python3 """Script para modificar la estructura de la tabla registro""" from connection import get_connection import sys def modificar_tabla(): """Modifica la tabla registro para agregar uid y cambiar id a INT""" conn = get_connection() if not conn: print("❌ Error: No se pudo conectar a la base de datos") sys.exit(1) try: cursor = conn.cursor() print("🔨 Iniciando modificación de tabla...") print("-" * 60) # Paso 1: Verificar si la tabla existe cursor.execute("SHOW TABLES LIKE 'registro'") if not cursor.fetchone(): print("❌ Error: La tabla 'registro' no existe") sys.exit(1) print("✅ Tabla 'registro' encontrada") # Paso 2: Crear tabla temporal con la nueva estructura sql_tabla_nueva = """ CREATE TABLE `registro_new` ( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID auto-incremental', `uid` VARCHAR(255) UNIQUE COMMENT 'UID de Firestore', `display_name` VARCHAR(255) COMMENT 'Nombre mostrado del usuario', `pais` VARCHAR(255) COMMENT 'País del usuario', `correo` VARCHAR(255) UNIQUE COMMENT 'Email del usuario', `fecha_registro` DATETIME COMMENT 'Fecha de registro', `usos` INT DEFAULT 0 COMMENT 'Cantidad de usos', `prompt` VARCHAR(255) COMMENT 'Prompt utilizado', `proveedor` VARCHAR(255) COMMENT 'Proveedor del servicio', `seed` INT COMMENT 'Seed para generación', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha de creación', KEY `idx_uid` (`uid`), KEY `idx_correo` (`correo`), KEY `idx_pais` (`pais`), KEY `idx_fecha_registro` (`fecha_registro`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tabla de registro de usuarios' """ cursor.execute(sql_tabla_nueva) print("✅ Tabla temporal creada") # Paso 3: Copiar datos de tabla antigua a nueva (si existen) cursor.execute("SELECT COUNT(*) FROM `registro`") count = cursor.fetchone()[0] if count > 0: cursor.execute(""" INSERT INTO `registro_new` (display_name, pais, correo, fecha_registro, usos, prompt, proveedor, seed, created_at) SELECT display_name, pais, correo, fecha_registro, usos, prompt, proveedor, seed, created_at FROM `registro` """) print(f"✅ {count} registros migrados a tabla nueva") else: print("✅ No había registros para migrar") # Paso 4: Eliminar tabla antigua cursor.execute("DROP TABLE `registro`") print("✅ Tabla antigua eliminada") # Paso 5: Renombrar tabla nueva cursor.execute("RENAME TABLE `registro_new` TO `registro`") print("✅ Tabla nueva renombrada") conn.commit() # Verificar estructura final cursor.execute("DESCRIBE `registro`") columnas = cursor.fetchall() print("\n📋 Nueva estructura de la tabla:") print("-" * 60) for col in columnas: print(f" {col[0]:<20} {col[1]:<30} {col[2]}") cursor.close() conn.close() print("\n✅ Modificación completada exitosamente") except Exception as e: print(f"❌ Error al modificar la tabla: {e}") try: cursor.execute("DROP TABLE IF EXISTS `registro_new`") conn.commit() except: pass sys.exit(1) if __name__ == "__main__": print("\n🔄 Modificando estructura de la BD...") print("=" * 60) modificar_tabla() print("=" * 60) print("\n⚠️ Recuerda actualizar models.py y funciones.py")