feat: KnowledgeDocServiceWithCreator
This commit is contained in:
@@ -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))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user