token.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from fastapi import APIRouter, Depends
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from sqlmodel import select
  4. from app.api.deps import verify_admin_token, get_async_session
  5. from app.libs.paginate import CommonPage, cursor_page
  6. from app.models.token import Token, TokenCreate, TokenUpdate
  7. from app.services.token.token import TokenService
  8. router = APIRouter()
  9. @router.get("", response_model=CommonPage[Token], dependencies=[Depends(verify_admin_token)])
  10. async def list_tokens(*, session: AsyncSession = Depends(get_async_session)):
  11. """
  12. Returns a list of tokens.
  13. """
  14. statement = select(Token)
  15. return await cursor_page(statement, session)
  16. @router.post("", response_model=Token, dependencies=[Depends(verify_admin_token)])
  17. async def create_token(*, session: AsyncSession = Depends(get_async_session), body: TokenCreate) -> Token:
  18. """
  19. Create a token with a llm url & token.
  20. """
  21. return await TokenService.create_token(session=session, body=body)
  22. @router.get("/{token}", response_model=Token, dependencies=[Depends(verify_admin_token)])
  23. async def get_token(*, session: AsyncSession = Depends(get_async_session), token: str) -> Token:
  24. """
  25. Retrieves a token.
  26. """
  27. return await TokenService.get_token(session=session, token=token)
  28. @router.get("/refresh_token/{token}", response_model=Token, dependencies=[Depends(verify_admin_token)])
  29. async def refresh_token(*, session: AsyncSession = Depends(get_async_session), token: str) -> Token:
  30. return await TokenService.refresh_token(session=session, token=token)
  31. @router.post("/modify_token/{token}", response_model=Token, dependencies=[Depends(verify_admin_token)])
  32. async def modify_token(*, session: AsyncSession = Depends(get_async_session), body: TokenUpdate, token: str) -> Token:
  33. return await TokenService.modify_token(session=session, body=body, token=token)