from fastapi import APIRouter, Depends, BackgroundTasks
from sqlalchemy.orm import Session
from app.database import get_db
from app.services.seeder import run_seeder
from loguru import logger

router = APIRouter(prefix="/seed", tags=["Seed"])

_seeder_status = {"running": False, "last_result": None}


@router.post("/miners")
async def seed_miners(
    background_tasks: BackgroundTasks,
    db: Session = Depends(get_db),
):
    """Trigger AI-powered miner seeding. Runs in background."""
    if _seeder_status["running"]:
        return {"message": "Seeder is already running", "status": _seeder_status}

    async def _run():
        _seeder_status["running"] = True
        try:
            result = await run_seeder(db)
            _seeder_status["last_result"] = result
            logger.info(f"Seeder finished: {result}")
        except Exception as e:
            logger.error(f"Seeder error: {e}")
            _seeder_status["last_result"] = {"error": str(e)}
        finally:
            _seeder_status["running"] = False

    background_tasks.add_task(_run)
    return {"message": "Seeder started in background", "status": "running"}


@router.post("/miners/sync")
async def seed_miners_sync(db: Session = Depends(get_db)):
    """Synchronous seeder (blocks until done) - use for first-time setup."""
    if _seeder_status["running"]:
        return {"message": "Seeder is already running"}

    _seeder_status["running"] = True
    try:
        result = await run_seeder(db)
        _seeder_status["last_result"] = result
        return {"message": "Seeder completed", "result": result}
    except Exception as e:
        logger.error(f"Seeder sync error: {e}")
        return {"message": "Seeder failed", "error": str(e)}
    finally:
        _seeder_status["running"] = False


@router.get("/status")
async def seeder_status():
    return _seeder_status
