diff --git a/app/api/endpoints/workflow.py b/app/api/endpoints/workflow.py index 24f948b8..24d4d879 100644 --- a/app/api/endpoints/workflow.py +++ b/app/api/endpoints/workflow.py @@ -1,4 +1,5 @@ -from typing import List +from datetime import datetime +from typing import List, Any from fastapi import APIRouter, Depends from sqlalchemy.orm import Session @@ -7,14 +8,14 @@ from app import schemas from app.db import get_db from app.db.models.workflow import Workflow from app.db.user_oper import get_current_active_superuser, get_current_active_user -from chain.workflow import WorkflowChain +from app.chain.workflow import WorkflowChain router = APIRouter() @router.get("/", summary="所有工作流", response_model=List[schemas.Workflow]) def list_workflows(db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(get_current_active_user)) -> List[dict]: + _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any: """ 获取工作流列表 """ @@ -24,17 +25,24 @@ def list_workflows(db: Session = Depends(get_db), @router.post("/", summary="创建工作流", response_model=schemas.Workflow) def create_workflow(workflow: schemas.Workflow, db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: + _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any: """ 创建工作流 """ - return Workflow.create(db, workflow) + if Workflow.get_by_name(db, workflow.name): + return schemas.Response(success=False, message="已存在相同名称的工作流") + if not workflow.add_time: + workflow.add_time = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S") + if not workflow.state: + workflow.state = "P" + Workflow(**workflow.dict()).create(db) + return schemas.Response(success=True, message="创建工作流成功") @router.get("/{workflow_id}", summary="工作流详情", response_model=schemas.Workflow) def get_workflow(workflow_id: int, db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(get_current_active_user)) -> dict: + _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any: """ 获取工作流详情 """ @@ -44,28 +52,32 @@ def get_workflow(workflow_id: int, @router.put("/{workflow_id}", summary="更新工作流", response_model=schemas.Workflow) def update_workflow(workflow: schemas.Workflow, db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: + _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any: """ 更新工作流 """ - return Workflow.update(db, workflow) + Workflow.update(db, workflow) + return schemas.Response(success=True, message="更新成功") @router.delete("/{workflow_id}", summary="删除工作流", response_model=schemas.Workflow) def delete_workflow(workflow_id: int, db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: + _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any: """ 删除工作流 """ - return Workflow.delete(db, workflow_id) + Workflow.delete(db, workflow_id) + return schemas.Response(success=True, message="删除成功") @router.get("/run/{workfow_id}", summary="执行工作流", response_model=schemas.Workflow) def run_workflow(workfow_id: int, from_begin: bool = True, - _: schemas.TokenPayload = Depends(get_current_active_user)) -> dict: + _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any: """ 执行工作流 """ - return WorkflowChain().process(workfow_id, from_begin=from_begin) + if WorkflowChain().process(workfow_id, from_begin=from_begin): + return schemas.Response(success=True, message="执行成功") + return schemas.Response(success=False, message="执行失败")