diff --git a/app/api/endpoints/workflow.py b/app/api/endpoints/workflow.py index af9233c5..cbf58d77 100644 --- a/app/api/endpoints/workflow.py +++ b/app/api/endpoints/workflow.py @@ -1,3 +1,71 @@ -from fastapi import APIRouter +from typing import List + +from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session + +from app import schemas +from app.db import get_db +from app.db.user_oper import get_current_active_superuser, get_current_active_user +from chain.workflow import WorkflowChain +from db.models.workflow import Workflow 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]: + """ + 获取工作流列表 + """ + return Workflow.list(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: + """ + 创建工作流 + """ + return Workflow.create(db, workflow) + + +@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: + """ + 获取工作流详情 + """ + return Workflow.get(db, workflow_id) + + +@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: + """ + 更新工作流 + """ + return Workflow.update(db, workflow) + + +@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: + """ + 删除工作流 + """ + return Workflow.delete(db, workflow_id) + + +@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: + """ + 执行工作流 + """ + return WorkflowChain().process(workfow_id, from_begin=from_begin)