| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- from fastapi import APIRouter, Depends
 
- from sqlalchemy.ext.asyncio import AsyncSession
 
- from sqlmodel import select
 
- from app.api.deps import get_token_id, get_async_session
 
- from app.models.assistant import Assistant, AssistantUpdate, AssistantCreate, AssistantRead
 
- from app.libs.paginate import cursor_page, CommonPage
 
- from app.models.token_relation import RelationType
 
- from app.providers.auth_provider import auth_policy
 
- from app.schemas.common import DeleteResponse
 
- from app.services.assistant.assistant import AssistantService
 
- router = APIRouter()
 
- @router.get("", response_model=CommonPage[AssistantRead])
 
- async def list_assistants(*, session: AsyncSession = Depends(get_async_session), token_id=Depends(get_token_id)):
 
-     """
 
-     Returns a list of assistants.
 
-     """
 
-     statement = auth_policy.token_filter(
 
-         select(Assistant), field=Assistant.id, relation_type=RelationType.Assistant, token_id=token_id
 
-     )
 
-     asts_page = await cursor_page(statement, session)
 
-     asts_page.data = [ast.model_dump(by_alias=True) for ast in asts_page.data]
 
-     return asts_page
 
- @router.post("", response_model=AssistantRead)
 
- async def create_assistant(
 
-     *, session: AsyncSession = Depends(get_async_session), body: AssistantCreate, token_id=Depends(get_token_id)
 
- ):
 
-     """
 
-     Create an assistant with a model and instructions.
 
-     """
 
-     ast = await AssistantService.create_assistant(session=session, body=body, token_id=token_id)
 
-     return ast.model_dump(by_alias=True)
 
- @router.get("/{assistant_id}", response_model=AssistantRead)
 
- async def get_assistant(*, session: AsyncSession = Depends(get_async_session), assistant_id: str):
 
-     """
 
-     Retrieves an assistant.
 
-     """
 
-     ast = await AssistantService.get_assistant(session=session, assistant_id=assistant_id)
 
-     return ast.model_dump(by_alias=True)
 
- @router.post("/{assistant_id}", response_model=AssistantRead)
 
- async def modify_assistant(
 
-     *, session: AsyncSession = Depends(get_async_session), assistant_id: str, body: AssistantUpdate
 
- ):
 
-     """
 
-     Modifies an assistant.
 
-     """
 
-     ast = await AssistantService.modify_assistant(session=session, assistant_id=assistant_id, body=body)
 
-     return ast.model_dump(by_alias=True)
 
- @router.delete("/{assistant_id}", response_model=DeleteResponse)
 
- async def delete_assistant(*, session: AsyncSession = Depends(get_async_session), assistant_id: str) -> DeleteResponse:
 
-     """
 
-     Delete an assistant.
 
-     """
 
-     return await AssistantService.delete_assistant(session=session, assistant_id=assistant_id)
 
 
  |