#!/usr/bin/env python3
"""
Script simple para crear un backup real de BullMQ
"""

# Importar directamente desde el módulo local  
from .bullmaq_backup import bullmq_backup, list_backups, mongodb_collection_backup, bullmq_delete_backup
from .bullmq_sender import bullmq_sender

# Intentar importar la conexión de base de datos
try:
    import sys
    import os
    sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
    from tredops_eval.connect import db
    print(f"✅ Conexión a MongoDB establecida: {db.name if db is not None else 'None'}")
except ImportError as e:
    print(f"⚠️  No se pudo importar la conexión de DB: {e}")
    print("Usando conexión mock para demostración...")
    db = None

# Si no hay conexión real, crear una simulada para el ejemplo
if db is None:
    print("📝 Creando ejemplo con datos simulados...")
    from datetime import datetime, timezone
    
    # Simular resultado de backup
    mock_result = {
        "status": "success",
        "backup_id": f"demo_backup_{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S')}",
        "total_jobs": 5,
        "total_queues": 2,
        "message": "Demo backup (no real DB connection)"
    }
    print(f"📦 Resultado simulado: {mock_result}")
    
else:
    print("🚀 Ejecutando backup real...")
    
    # Crear algunos jobs de prueba
    print("1. Creando jobs de prueba...")
    job_ids = []
    test_queues = ["backup_demo_1", "backup_demo_2"]
    
    for i, queue in enumerate(test_queues):
        try:
            job_id = bullmq_sender(
                worker=queue,
                priority=5,
                delay_sec=1,
                message={"demo": True, "index": i}
            )
            job_ids.append(job_id)
            print(f"   ✅ Job {job_id} creado en '{queue}'")
        except Exception as e:
            print(f"   ❌ Error creando job en '{queue}': {e}")
    
    # Hacer backup real
    print("\\n2. Creando backup...")
    backup_result = bullmq_backup(
        db=db,
        queue_names=test_queues,
        backup_name="demo_backup_real"
    )
    
    print(f"📊 Resultado del backup:")
    for key, value in backup_result.items():
        print(f"   {key}: {value}")
    
    if backup_result.get('status') == 'success':
        print(f"\\n✅ ¡Backup creado exitosamente en MongoDB!")
        print(f"🔍 Puedes verificarlo en la colección: {mongodb_collection_backup}")
        
        # Verificar que existe
        try:
            collection = db[mongodb_collection_backup]
            found = collection.find_one({"backup_id": backup_result['backup_id']})
            if found:
                print(f"✅ Confirmado: Backup existe en DB con _id: {found['_id']}")
            else:
                print(f"❌ Backup no encontrado en DB")
        except Exception as e:
            print(f"❌ Error verificando: {e}")
    
    # Listar backups existentes
    print(f"\\n3. Listando backups existentes...")
    try:
        backups = list_backups(db)
        print(f"📋 Total de backups en DB: {len(backups)}")
        
        for backup in backups[:5]:  # Mostrar primeros 5
            print(f"   📄 {backup['backup_id']} - {backup.get('total_jobs', 0)} jobs")
            
    except Exception as e:
        print(f"❌ Error listando backups: {e}")

print("\\n🎯 Script completado!")
print("\\n💡 Para verificar los backups manualmente:")
print(f"   - Colección MongoDB: {mongodb_collection_backup}")
print("   - Usar MongoDB Compass o mongo shell para ver los documentos")