from fastapi import APIRouter, Depends, Query, Path, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from src.database import get_db
from src.cache.download_cache import load_products_cache, load_categories_cache
from src.cache.cache import CATEGORIES_CACHE, PRODUCTS_CACHE
from src.seo.service import SeoService

router = APIRouter(prefix="/admin/cache", tags=["Admin Cache"])

@router.post("/clear")
async def clear_cache():
    """
    Очищає кеш продуктів та категорій у оперативній пам'яті.
    """
    global PRODUCTS_CACHE, CATEGORIES_CACHE
    PRODUCTS_CACHE.clear()
    CATEGORIES_CACHE.clear()
    return {"status": "success", "message": "✅ Кеш продуктів та категорій очищено"}

@router.get("/status")
async def cache_status():
    """
    Повертає кількість продуктів і категорій у кеші.
    """
    return {
        "status": "success",
        "products_in_cache": len(PRODUCTS_CACHE),
        "categories_in_cache": len(CATEGORIES_CACHE),
    }

@router.post("/loadCache")
async def load_cache(db: AsyncSession = Depends(get_db)):
    await load_products_cache(batch_size=50_000)
    await load_categories_cache(db)

@router.put("/make_all_fine", summary="Зробити всьо заїбісь")
async def recreate_cache_one_button(db: AsyncSession = Depends(get_db)):
    await SeoService.generate_seo_products(db=db)
    await SeoService.generate_seo_category(db=db)
    await SeoService.generate_seo_store(db=db)
    await SeoService.generate_seo_manufacturer(db=db)

    global PRODUCTS_CACHE, CATEGORIES_CACHE
    PRODUCTS_CACHE.clear()
    CATEGORIES_CACHE.clear()

    await load_products_cache(batch_size=50_000)
    await load_categories_cache(db)

    return {
        "status": "success",
        "products_in_cache": len(PRODUCTS_CACHE),
        "categories_in_cache": len(CATEGORIES_CACHE),
    }