| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | from fastapi import APIRouter, Dependsfrom sqlalchemy.ext.asyncio import AsyncSessionfrom sqlmodel import selectfrom app.api.deps import get_async_sessionfrom app.libs.paginate import cursor_page, CommonPagefrom app.models.assistant_file import AssistantFileCreate, AssistantFilefrom app.schemas.common import DeleteResponsefrom app.services.assistant.assistant_file import AssistantFileServicerouter = APIRouter()@router.get("/{assistant_id}/files", response_model=CommonPage[AssistantFile])async def list_assistant_files(    *,    session: AsyncSession = Depends(get_async_session),    assistant_id: str,):    """    Returns a list of assistant files.    """    return await cursor_page(select(AssistantFile).where(AssistantFile.assistant_id == assistant_id), db=session)@router.post("/{assistant_id}/files", response_model=AssistantFile)async def create_assistant_file(    *,    session: AsyncSession = Depends(get_async_session),    assistant_id: str,    body: AssistantFileCreate,) -> AssistantFile:    """    Create an assistant file by attaching a [File](/docs/api-reference/files)    to an [assistant](/docs/api-reference/assistants).    """    return await AssistantFileService.create_assistant_file(session=session, assistant_id=assistant_id, body=body)@router.get("/{assistant_id}/files/{file_id}", response_model=AssistantFile)async def get_assistant_file(    *, session: AsyncSession = Depends(get_async_session), assistant_id: str, file_id: str) -> AssistantFile:    """    Retrieves an AssistantFile.    """    return await AssistantFileService.get_assistant_file(session=session, assistant_id=assistant_id, file_id=file_id)@router.delete(    "/{assistant_id}/files/{file_id}",    response_model=DeleteResponse,)async def delete_assistant_file(    *, session: AsyncSession = Depends(get_async_session), assistant_id: str, file_id: str) -> DeleteResponse:    """    Delete an assistant file.    """    return await AssistantFileService.delete_assistant_file(session=session, assistant_id=assistant_id, file_id=file_id)
 |