thread.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from fastapi import APIRouter, Depends
  2. from sqlalchemy.ext.asyncio import AsyncSession
  3. from app.api.deps import get_token_id, get_async_session
  4. from app.models.thread import Thread, ThreadUpdate, ThreadCreate
  5. from app.schemas.common import DeleteResponse
  6. from app.services.thread.thread import ThreadService
  7. router = APIRouter()
  8. @router.post("", response_model=Thread)
  9. async def create_thread(
  10. *, session: AsyncSession = Depends(get_async_session), body: ThreadCreate, token_id=Depends(get_token_id)
  11. ) -> Thread:
  12. """
  13. Create a thread.
  14. """
  15. return await ThreadService.create_thread(session=session, body=body, token_id=token_id)
  16. @router.get("/{thread_id}", response_model=Thread)
  17. async def get_thread(*, session: AsyncSession = Depends(get_async_session), thread_id: str) -> Thread:
  18. """
  19. Retrieves a thread.
  20. """
  21. return await ThreadService.get_thread(session=session, thread_id=thread_id)
  22. @router.post("/{thread_id}", response_model=Thread)
  23. async def modify_thread(
  24. *, session: AsyncSession = Depends(get_async_session), thread_id: str, body: ThreadUpdate
  25. ) -> Thread:
  26. """
  27. Modifies a thread.
  28. """
  29. return await ThreadService.modify_thread(session=session, thread_id=thread_id, body=body)
  30. @router.delete("/{thread_id}", response_model=DeleteResponse)
  31. async def delete_thread(*, session: AsyncSession = Depends(get_async_session), thread_id: str) -> DeleteResponse:
  32. """
  33. Delete a thread.
  34. """
  35. return await ThreadService.delete_assistant(session=session, thread_id=thread_id)