thread.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. *,
  11. session: AsyncSession = Depends(get_async_session),
  12. body: ThreadCreate,
  13. token_id=Depends(get_token_id)
  14. ) -> Thread:
  15. """
  16. Create a thread.
  17. """
  18. return await ThreadService.create_thread(
  19. session=session, body=body, token_id=token_id
  20. )
  21. @router.get("/{thread_id}", response_model=Thread)
  22. async def get_thread(
  23. *, session: AsyncSession = Depends(get_async_session), thread_id: str
  24. ) -> Thread:
  25. """
  26. Retrieves a thread.
  27. """
  28. return await ThreadService.get_thread(session=session, thread_id=thread_id)
  29. @router.post("/{thread_id}", response_model=Thread)
  30. async def modify_thread(
  31. *,
  32. session: AsyncSession = Depends(get_async_session),
  33. thread_id: str,
  34. body: ThreadUpdate
  35. ) -> Thread:
  36. """
  37. Modifies a thread.
  38. """
  39. return await ThreadService.modify_thread(
  40. session=session, thread_id=thread_id, body=body
  41. )
  42. @router.delete("/{thread_id}", response_model=DeleteResponse)
  43. async def delete_thread(
  44. *, session: AsyncSession = Depends(get_async_session), thread_id: str
  45. ) -> DeleteResponse:
  46. """
  47. Delete a thread.
  48. """
  49. return await ThreadService.delete_assistant(session=session, thread_id=thread_id)