| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- """Administrative API routes."""
- from typing import Any, Dict, Optional
- from fastapi import APIRouter, Depends
- from chatfast.services.auth import (
- AdminUserRequest,
- AdminUserUpdateRequest,
- UserInfo,
- admin_create_user as admin_create_user_service,
- admin_delete_user as admin_delete_user_service,
- admin_get_user as admin_get_user_service,
- admin_list_users as admin_list_users_service,
- admin_update_user as admin_update_user_service,
- require_admin,
- )
- from chatfast.services.chat import list_exports_admin
- router = APIRouter(prefix="/api/admin", tags=["admin"])
- @router.get("/users")
- async def api_admin_list_users(
- keyword: Optional[str] = None,
- page: int = 0,
- page_size: int = 20,
- admin: UserInfo = Depends(require_admin),
- ) -> Dict[str, Any]:
- return await admin_list_users_service(keyword, page, page_size)
- @router.post("/users")
- async def api_admin_create_user(payload: AdminUserRequest, admin: UserInfo = Depends(require_admin)) -> Dict[str, Any]:
- return await admin_create_user_service(payload.username, payload.password)
- @router.get("/users/{user_id}")
- async def api_admin_get_user(user_id: int, admin: UserInfo = Depends(require_admin)) -> Dict[str, Any]:
- return await admin_get_user_service(user_id)
- @router.put("/users/{user_id}")
- async def api_admin_update_user(
- user_id: int,
- payload: AdminUserUpdateRequest,
- admin: UserInfo = Depends(require_admin),
- ) -> Dict[str, Any]:
- return await admin_update_user_service(user_id, payload)
- @router.delete("/users/{user_id}")
- async def api_admin_delete_user(user_id: int, admin: UserInfo = Depends(require_admin)) -> Dict[str, Any]:
- return await admin_delete_user_service(user_id)
- @router.get("/exports")
- async def api_admin_exports(
- keyword: Optional[str] = None,
- admin: UserInfo = Depends(require_admin),
- ) -> Dict[str, Any]:
- items = await list_exports_admin(keyword)
- return {"items": items}
|