feat: KnowledgeDocServiceWithCreator

This commit is contained in:
martsforever
2025-09-08 15:16:11 +08:00
parent 2bfc3bc0e0
commit 5e82d5d55b
2 changed files with 43 additions and 2 deletions
+41 -1
View File
@@ -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))
)