import uuid from typing import Sequence from sqlalchemy import select from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession from app.models.workflow_template import WorkflowTemplate async def get(db: AsyncSession, template_id: uuid.UUID) -> WorkflowTemplate | None: result = await db.execute(select(WorkflowTemplate).where(WorkflowTemplate.id == template_id)) return result.scalar_one_or_none() async def list_active(db: AsyncSession, trial_id: uuid.UUID | None = None) -> Sequence[WorkflowTemplate]: stmt = ( select(WorkflowTemplate) .where(WorkflowTemplate.is_active.is_(True)) .options(selectinload(WorkflowTemplate.nodes)) ) if trial_id: stmt = stmt.where(WorkflowTemplate.trial_id == trial_id) result = await db.execute(stmt) return result.scalars().all()