refactor: isolate workflow queries

This commit is contained in:
jxxghp
2026-08-23 14:06:14 +08:00
parent 4074fa4e42
commit be1071b6cd
8 changed files with 90 additions and 71 deletions
+24 -10
View File
@@ -66,7 +66,7 @@ class WorkflowOper(DbOper):
新增工作流
"""
wf = Workflow(**kwargs)
if not wf.get_by_name(self._db, kwargs.get("name")):
if not self.get_by_name(kwargs.get("name")):
self._stage_create(wf)
return True, "新增工作流成功"
return False, "工作流已存在"
@@ -75,7 +75,7 @@ class WorkflowOper(DbOper):
"""
查询单个工作流
"""
return Workflow.get(self._db, wid)
return self._execute_sync_query(lambda session: Workflow.get(session, wid))
def stage_state(self, workflow_id: int, state: str) -> bool:
"""暂存工作流状态变更,不由模型方法自行提交。"""
@@ -109,49 +109,63 @@ class WorkflowOper(DbOper):
"""
异步查询单个工作流
"""
return await Workflow.async_get(self._db, wid)
return await self._execute_async_query(
lambda session: Workflow.async_get(session, wid)
)
def list(self) -> List[Workflow]:
"""
获取所有工作流列表
"""
return Workflow.list(self._db)
return self._execute_sync_query(lambda session: Workflow.list(session))
async def async_list(self) -> List[Workflow]:
"""
异步获取所有工作流列表
"""
return await Workflow.async_list(self._db)
return await self._execute_async_query(
lambda session: Workflow.async_list(session)
)
def list_enabled(self) -> List[Workflow]:
"""
获取启用的工作流列表
"""
return Workflow.get_enabled_workflows(self._db)
return self._execute_sync_query(
lambda session: Workflow.get_enabled_workflows(session)
)
def get_timer_triggered_workflows(self) -> List[Workflow]:
"""
获取定时触发的工作流列表
"""
return Workflow.get_timer_triggered_workflows(self._db)
return self._execute_sync_query(
lambda session: Workflow.get_timer_triggered_workflows(session)
)
def get_event_triggered_workflows(self) -> List[Workflow]:
"""
获取事件触发的工作流列表
"""
return Workflow.get_event_triggered_workflows(self._db)
return self._execute_sync_query(
lambda session: Workflow.get_event_triggered_workflows(session)
)
def get_by_name(self, name: str) -> Workflow:
"""
按名称获取工作流
"""
return Workflow.get_by_name(self._db, name)
return self._execute_sync_query(
lambda session: Workflow.get_by_name(session, name)
)
async def async_get_by_name(self, name: str) -> Optional[Workflow]:
"""
异步按名称获取工作流
"""
return await Workflow.async_get_by_name(self._db, name)
return await self._execute_async_query(
lambda session: Workflow.async_get_by_name(session, name)
)
async def stage_create(self, payload: Mapping[str, Any]) -> Workflow:
"""暂存新工作流,不在操作器内提交事务。"""