hfcron / backend /api /admin_routes.py
Ajitdoval's picture
Create backend/api/admin_routes.py
861e419 verified
Raw
History Blame Contribute Delete
1.42 kB
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}