Spaces:
Running
Running
| #!/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") | |