46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import asyncio
|
|
from enum import Enum
|
|
from typing import Optional
|
|
|
|
from sqlmodel import Field
|
|
|
|
from app.model.BasicModel import BasicModel
|
|
from app.utils.create_module_service import create_model_service
|
|
from app.utils.milvus_utils import milvus_service
|
|
|
|
|
|
class KnowledgeDocStatus(Enum):
|
|
process = "process"
|
|
fail = "fail"
|
|
success = "success"
|
|
|
|
|
|
class KnowledgeDocModel(BasicModel, table=True):
|
|
__tablename__ = "pl_knowledge_doc"
|
|
|
|
parent_code: str = Field(default=None, description="所属知识库的code")
|
|
name: str = Field(default=None, description="文档名称")
|
|
status: str = Field(default=None, description="文档的处理状态")
|
|
path: str = Field(default=None, description="文档原始文件路径")
|
|
error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息")
|
|
content: Optional[str] = Field(default=None, description="在线可编辑文档内容")
|
|
|
|
|
|
async def handle_after_delete(delete_cls, row_dict, session):
|
|
await milvus_service.async_delete(delete_cls.id)
|
|
|
|
|
|
async def handle_after_batch_delete(delete_cls_list, row_dict_list, session):
|
|
task_list = [
|
|
asyncio.create_task(handle_after_delete(doc_cls, {}, session))
|
|
for doc_cls in delete_cls_list
|
|
]
|
|
await asyncio.gather(*task_list)
|
|
|
|
|
|
KnowledgeDocService = create_model_service(
|
|
KnowledgeDocModel,
|
|
after_delete=handle_after_delete,
|
|
after_batch_delete=handle_after_batch_delete
|
|
)
|