# src/realtime_service.py
"""
Servicio de Análisis en Tiempo Real
"""
import argparse
import logging
import coloredlogs
from .processors.realtime.analyzer import RealtimeAnalyzer
from .processors.realtime.realtime import RealtimeProcessor
from .cli.realtime_menu import RealtimeCommandProcessor


def setup_logging():
    coloredlogs.install(
        level=logging.INFO,
        fmt='%(asctime)s [%(levelname)s] %(message)s'
    )
    return logging.getLogger(__name__)

def main():
    logger = setup_logging()
    
    parser = argparse.ArgumentParser(description='Análisis en Tiempo Real')
    parser.add_argument('db_name', help='Nombre de la base de datos')
    parser.add_argument('-v', '--verbose', action='store_true', help='Modo verbose')
    args = parser.parse_args()
    
    processor = RealtimeProcessor(args.db_name)
    menu = RealtimeCommandProcessor(processor)
    menu.start()

    try:
        analyzer = RealtimeAnalyzer(args.db_name)
        if args.verbose:
            analyzer.toggle_verbose()
            
        logger.info("Iniciando servicio de análisis en tiempo real...")
        analyzer.run()
        
    except KeyboardInterrupt:
        logger.info("Interrupción de usuario recibida")
    except Exception as e:
        logger.error(f"Error en sistema: {e}", exc_info=True)
    finally:
        if 'analyzer' in locals():
            analyzer.stop()
        logger.info("Servicio finalizado")

if __name__ == "__main__":
    main()
