Spaces:
Paused
Paused
| from __future__ import annotations | |
| from fastapi import APIRouter, Depends, Query | |
| from app.api.deps import CurrentAdmin, get_services | |
| from app.models.schemas import ApiMessage, BroadcastRequest, CreditAdjustmentRequest | |
| from app.services.container import Services | |
| router = APIRouter(prefix="/admin", tags=["admin"]) | |
| async def stats(_: CurrentAdmin, services: Services = Depends(get_services)) -> dict: | |
| return await services.admin.dashboard_snapshot() | |
| async def list_users( | |
| _: CurrentAdmin, | |
| services: Services = Depends(get_services), | |
| query: str | None = Query(default=None), | |
| limit: int = Query(default=50, ge=1, le=200), | |
| ) -> list[dict]: | |
| return await services.admin.list_users(query=query, limit=limit) | |
| async def list_jobs( | |
| _: CurrentAdmin, | |
| services: Services = Depends(get_services), | |
| limit: int = Query(default=50, ge=1, le=200), | |
| ) -> list[dict]: | |
| return await services.admin.list_jobs(limit=limit) | |
| async def grant_credits( | |
| payload: CreditAdjustmentRequest, | |
| admin_user: CurrentAdmin, | |
| services: Services = Depends(get_services), | |
| ) -> dict: | |
| return await services.admin.grant_credits(admin_user.id or "", payload) | |
| async def broadcast( | |
| payload: BroadcastRequest, | |
| admin_user: CurrentAdmin, | |
| services: Services = Depends(get_services), | |
| ) -> ApiMessage: | |
| result = await services.admin.queue_broadcast(admin_user.id or "", payload) | |
| return ApiMessage(message="Broadcast queued.", details=result) | |