| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | from sqlmodel import selectfrom sqlalchemy.ext.asyncio import AsyncSessionfrom app.exceptions.exception import ResourceNotFoundErrorfrom app.models.assistant_file import (    AssistantFile,    AssistantFileCreate,    AssistantFileUpdate,)from app.schemas.common import DeleteResponseclass AssistantFileService:    @staticmethod    async def create_assistant_file(        *, session: AsyncSession, assistant_id: str, body: AssistantFileCreate    ) -> AssistantFile:        # TODO 关系表暂时不实现        return AssistantFile(id="", assistant_id=assistant_id)    @staticmethod    async def modify_assistant_file(        *, session: AsyncSession, assistant_id: str, body: AssistantFileUpdate    ) -> AssistantFile:        db_assistant = await AssistantFileService.get_assistant_file(            session=session, assistant_id=assistant_id, file_id=body.id        )        update_data = body.dict(exclude_unset=True)        for key, value in update_data.items():            setattr(db_assistant, key, value)        session.add(db_assistant)        await session.commit()        await session.refresh(db_assistant)        return db_assistant    @staticmethod    async def delete_assistant_file(*, session: AsyncSession, assistant_id: str, file_id: str) -> DeleteResponse:        assistant_file = await AssistantFileService.get_assistant_file(            session=session, assistant_id=assistant_id, file_id=file_id        )        id = assistant_file.id        await session.delete(assistant_file)        await session.commit()        return DeleteResponse(id=id, object="assistant_file.deleted", deleted=True)    @staticmethod    async def get_assistant_file(*, session: AsyncSession, assistant_id: str, file_id: str) -> AssistantFile:        statement = select(AssistantFile).where(AssistantFile.id == assistant_id).where(AssistantFile.id == file_id)        result = await session.execute(statement)        assistant_file = result.scalars().one_or_none()        if assistant_file is None:            raise ResourceNotFoundError(message=f"Assistant file-{file_id} not found")        return session.exec(statement).one_or_none()
 |