TaskWeaver / api /execution_routes.py
PocketSkye's picture
Initial deployment
0242ab2
Raw
History Blame Contribute Delete
2.75 kB
from fastapi import (
APIRouter,
Depends,
HTTPException
)
from sqlalchemy.orm import Session
from core.database import get_db
from core.deps import get_current_user
from services.execution_service import (
ExecutionService
)
from models.workflow import Workflow
from models.workflow_run import WorkflowRun
router = APIRouter(
prefix="/executions",
tags=["Executions"]
)
execution_service = ExecutionService()
# RUN WORKFLOW
@router.post("/run/{workflow_id}")
async def run_workflow(
workflow_id: int,
db: Session = Depends(get_db),
current_user = Depends(
get_current_user
)
):
return await execution_service.run_workflow(
workflow_id,
current_user.id,
db
)
# GET ALL EXECUTIONS OF CURRENT USER
@router.get("/history")
def get_execution_history(
db: Session = Depends(get_db),
current_user = Depends(
get_current_user
)
):
runs = (
db.query(
WorkflowRun
)
.join(
Workflow,
Workflow.id ==
WorkflowRun.workflow_id
)
.filter(
Workflow.user_id ==
current_user.id
)
.order_by(
WorkflowRun.started_at.desc()
)
.all()
)
return runs
# GET EXECUTION HISTORY OF A WORKFLOW
@router.get(
"/workflow/{workflow_id}"
)
def get_workflow_runs(
workflow_id: int,
db: Session = Depends(get_db),
current_user = Depends(
get_current_user
)
):
workflow = db.query(
Workflow
).filter(
Workflow.id == workflow_id,
Workflow.user_id ==
current_user.id
).first()
if not workflow:
raise HTTPException(
status_code=404,
detail="Workflow not found"
)
runs = (
db.query(
WorkflowRun
)
.filter(
WorkflowRun.workflow_id ==
workflow_id
)
.order_by(
WorkflowRun.started_at.desc()
)
.all()
)
return runs
# GET SINGLE EXECUTION
@router.get("/{run_id}")
def get_execution(
run_id: int,
db: Session = Depends(get_db),
current_user = Depends(
get_current_user
)
):
run = (
db.query(
WorkflowRun
)
.join(
Workflow,
Workflow.id ==
WorkflowRun.workflow_id
)
.filter(
WorkflowRun.id ==
run_id,
Workflow.user_id ==
current_user.id
)
.first()
)
if not run:
raise HTTPException(
status_code=404,
detail="Execution not found"
)
return run