from fastapi import APIRouter, Depends from backend.core.database import get_database from backend.api.dependencies import get_admin_user router = APIRouter(prefix="/admin", tags=["Admin Panel"]) @router.get("/stats") async def get_global_stats(admin_user: dict = Depends(get_admin_user)): db = get_database() total_users = await db["users"].count_documents({}) total_jobs = await db["jobs"].count_documents({}) active_jobs = await db["jobs"].count_documents({"status": "active"}) total_logs = await db["job_logs"].count_documents({}) return { "total_users": total_users, "total_jobs": total_jobs, "active_jobs": active_jobs, "total_requests_executed": total_logs } @router.get("/users") async def list_users(admin_user: dict = Depends(get_admin_user)): db = get_database() # Exclude the encrypted token from the response for security cursor = db["users"].find({}, {"hf_token_encrypted": 0}) users = await cursor.to_list(length=100) for user in users: user["_id"] = str(user["_id"]) return {"users": users} @router.get("/jobs") async def list_all_jobs(admin_user: dict = Depends(get_admin_user)): db = get_database() cursor = db["jobs"].find({}) jobs = await cursor.to_list(length=100) for job in jobs: job["_id"] = str(job["_id"]) return {"jobs": jobs}