# main.py

import asyncio
import uvicorn
from entrypoint.init_db import init_db

from backend.main import app as fastapi_app

async def main_async():
    # Inicia tareas de fondo controladas desde aquí
    print("🔄 Lanzando tareas en segundo plano...")
    tareas = []

    # Configura y lanza el servidor FastAPI
    print("🚀 Lanzando servidor FastAPI...")
    config = uvicorn.Config(app=fastapi_app, host="0.0.0.0", port=8000, reload=True)
    server = uvicorn.Server(config)

    # Ejecuta servidor (bloqueante)
    await server.serve()

    # Cancela tareas si se cae el servidor
    for task in tareas:
        task.cancel()

def main():
    print("🛠️ Inicializando base de datos...")
    init_db()

    print("✅ Iniciando sistema...")
    asyncio.run(main_async())

if __name__ == "__main__":
    main()