28 lines
790 B
Python
28 lines
790 B
Python
"""DAG orchestration endpoints."""
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
from pydantic import BaseModel
|
|
from typing import List
|
|
from app.database import get_db
|
|
from app.services.dag_service import DAGService
|
|
from app.api.deps import get_current_user
|
|
from app.models.user import User
|
|
|
|
router = APIRouter(prefix="/dag")
|
|
|
|
|
|
class DAGExecuteRequest(BaseModel):
|
|
project_id: int
|
|
task_ids: List[int]
|
|
|
|
|
|
@router.post("/execute")
|
|
def execute_dag(
|
|
req: DAGExecuteRequest,
|
|
user: User = Depends(get_current_user),
|
|
db: Session = Depends(get_db),
|
|
):
|
|
"""Execute multiple tasks respecting dependencies (DAG)."""
|
|
results = DAGService.execute_dag(db, user.tenant_id, req.project_id, req.task_ids)
|
|
return {"success": True, "results": results}
|