"""Workflow routes.""" from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from app.api.schemas.workflow import WorkflowListResponse, WorkflowStatusResponse from app.application.services.workflow_service import WorkflowService from app.domain.enums import OrderStatus from app.infra.db.session import get_db_session router = APIRouter(prefix="/workflows", tags=["workflows"]) workflow_service = WorkflowService() @router.get("", response_model=WorkflowListResponse) async def list_workflows( page: int = Query(default=1, ge=1), limit: int = Query(default=20, ge=1, le=100), query: str | None = Query(default=None, min_length=1), status_filter: OrderStatus | None = Query(default=None, alias="status"), order_id: int | None = Query(default=None, ge=1), session: AsyncSession = Depends(get_db_session), ) -> WorkflowListResponse: """Fetch recent workflow runs for workflow lookup pages.""" return await workflow_service.list_workflows( session, page=page, limit=limit, query=query, status_filter=status_filter, order_id=order_id, ) @router.get("/{order_id}", response_model=WorkflowStatusResponse) async def get_workflow_status( order_id: int, session: AsyncSession = Depends(get_db_session), ) -> WorkflowStatusResponse: """Fetch persisted workflow status for an order.""" return await workflow_service.get_workflow_status(session, order_id)