feat: KnowledgeDocServiceWithCreator
This commit is contained in:
@@ -2,9 +2,12 @@ import asyncio
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional
|
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.BasicModel import BasicModel
|
||||||
|
from app.model.UserModel import UserServiceModel
|
||||||
from app.utils.create_module_service import create_model_service
|
from app.utils.create_module_service import create_model_service
|
||||||
from app.utils.milvus_utils import milvus_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="文档处理失败时的错误信息")
|
error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息")
|
||||||
content: 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):
|
async def handle_after_delete(delete_cls, row_dict, session):
|
||||||
await milvus_service.async_delete(delete_cls.id)
|
await milvus_service.async_delete(delete_cls.id)
|
||||||
@@ -43,3 +75,11 @@ KnowledgeDocService = create_model_service(
|
|||||||
after_delete=handle_after_delete,
|
after_delete=handle_after_delete,
|
||||||
after_batch_delete=handle_after_batch_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))
|
||||||
|
)
|
||||||
|
|||||||
+2
-1
@@ -28,7 +28,7 @@ from app.model.ConversationModel import ConversationService
|
|||||||
from app.model.HotelModel import HotelService
|
from app.model.HotelModel import HotelService
|
||||||
from app.model.InvoiceModel import InvoiceService
|
from app.model.InvoiceModel import InvoiceService
|
||||||
from app.model.KnowledgeBase import KnowledgeBaseService
|
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.LgApprove import LgApproveService
|
||||||
from app.model.LgChat import LgChatService
|
from app.model.LgChat import LgChatService
|
||||||
from app.model.LgMessage import LgMessageService
|
from app.model.LgMessage import LgMessageService
|
||||||
@@ -124,6 +124,7 @@ InvoiceService.add_route(app=app, path="/invoice")
|
|||||||
ConversationService.add_route(app=app, path="/conversation")
|
ConversationService.add_route(app=app, path="/conversation")
|
||||||
KnowledgeBaseService.add_route(app=app, path="/knowledge_base")
|
KnowledgeBaseService.add_route(app=app, path="/knowledge_base")
|
||||||
KnowledgeDocService.add_route(app=app, path="/knowledge_doc")
|
KnowledgeDocService.add_route(app=app, path="/knowledge_doc")
|
||||||
|
KnowledgeDocServiceWithCreator.add_route(app=app, path="/knowledge_doc_with_creator")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
run_uvicorn()
|
run_uvicorn()
|
||||||
|
|||||||
Reference in New Issue
Block a user