diff --git a/app/model/KnowledgeDoc.py b/app/model/KnowledgeDoc.py index 354a146..e74a97a 100644 --- a/app/model/KnowledgeDoc.py +++ b/app/model/KnowledgeDoc.py @@ -2,9 +2,12 @@ import asyncio from enum import Enum from typing import Optional -from sqlmodel import Field +from pydantic import computed_field +from sqlalchemy.orm import selectinload +from sqlmodel import Field, Relationship, select from app.model.BasicModel import BasicModel +from app.model.UserModel import UserServiceModel from app.utils.create_module_service import create_model_service from app.utils.milvus_utils import milvus_service @@ -25,6 +28,35 @@ class KnowledgeDocModel(BasicModel, table=True): error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息") content: Optional[str] = Field(default=None, description="在线可编辑文档内容") + # /*---------------------------------------created_by-------------------------------------------*/ + + created_by: str = Field( + default=None, + description="创建人id", + foreign_key="pl_user.id", + nullable=True + ) + + creator_relationship: Optional["UserServiceModel"] = Relationship( + sa_relationship_kwargs={ + "foreign_keys": "KnowledgeDocModel.created_by", + "remote_side": "UserServiceModel.id", + "uselist": False + } + ) + + @computed_field + @property + def creator(self) -> Optional[UserServiceModel]: + try: + return self.creator_relationship + except: + return None + + @creator.setter + def creator(self, value: Optional[UserServiceModel]) -> None: + pass + async def handle_after_delete(delete_cls, row_dict, session): await milvus_service.async_delete(delete_cls.id) @@ -43,3 +75,11 @@ KnowledgeDocService = create_model_service( after_delete=handle_after_delete, after_batch_delete=handle_after_batch_delete ) + +KnowledgeDocServiceWithCreator = create_model_service( + KnowledgeDocModel, + after_delete=handle_after_delete, + after_batch_delete=handle_after_batch_delete, + custom_query=lambda: select(KnowledgeDocModel) + .options(selectinload(KnowledgeDocModel.creator_relationship)) +) diff --git a/app/server.py b/app/server.py index b4dfff6..bc663d4 100644 --- a/app/server.py +++ b/app/server.py @@ -28,7 +28,7 @@ from app.model.ConversationModel import ConversationService from app.model.HotelModel import HotelService from app.model.InvoiceModel import InvoiceService from app.model.KnowledgeBase import KnowledgeBaseService -from app.model.KnowledgeDoc import KnowledgeDocService +from app.model.KnowledgeDoc import KnowledgeDocService, KnowledgeDocServiceWithCreator from app.model.LgApprove import LgApproveService from app.model.LgChat import LgChatService from app.model.LgMessage import LgMessageService @@ -124,6 +124,7 @@ InvoiceService.add_route(app=app, path="/invoice") ConversationService.add_route(app=app, path="/conversation") KnowledgeBaseService.add_route(app=app, path="/knowledge_base") KnowledgeDocService.add_route(app=app, path="/knowledge_doc") +KnowledgeDocServiceWithCreator.add_route(app=app, path="/knowledge_doc_with_creator") if __name__ == "__main__": run_uvicorn()