refactor: form-core wiring, JWT sessions, slowapi, packaging, frontend rewrite, test declutter
This commit is contained in:
parent
06ab25fb47
commit
03af41e837
74 changed files with 6089 additions and 5183 deletions
|
|
@ -129,12 +129,18 @@ def validate_flow_json(flow_json: dict) -> None:
|
|||
raise InvalidError("langflow_json.data must contain 'nodes' and 'edges' lists")
|
||||
|
||||
|
||||
def create_version(session: Session, flow_id: UUID, data: FlowVersionCreate) -> FlowVersion:
|
||||
def create_version(
|
||||
session: Session,
|
||||
flow_id: UUID,
|
||||
data: FlowVersionCreate,
|
||||
*,
|
||||
version_no: int | None = None,
|
||||
) -> FlowVersion:
|
||||
get_definition(session, flow_id)
|
||||
validate_flow_json(data.langflow_json)
|
||||
version = FlowVersion(
|
||||
flow_id=flow_id,
|
||||
version_no=next_version_no(session, flow_id),
|
||||
version_no=version_no if version_no is not None else next_version_no(session, flow_id),
|
||||
langflow_json=data.langflow_json,
|
||||
author=data.author,
|
||||
# Single choke point: sync, import, and API creation all cache the
|
||||
|
|
@ -256,6 +262,18 @@ def list_runs(session: Session, flow_id: UUID, tenant_id: str | None = None) ->
|
|||
return list(session.exec(query).all())
|
||||
|
||||
|
||||
def list_all_runs(session: Session, tenant_id: str) -> list[tuple[FlowRun, str]]:
|
||||
"""All runs of a tenant with flow names (single query, kills N+1)."""
|
||||
rows = session.exec(
|
||||
select(FlowRun, FlowDefinition.name)
|
||||
.join(FlowVersion, FlowVersion.id == FlowRun.version_id)
|
||||
.join(FlowDefinition, FlowDefinition.id == FlowVersion.flow_id)
|
||||
.where(FlowRun.tenant_id == tenant_id)
|
||||
.order_by(FlowRun.created_at.desc())
|
||||
).all()
|
||||
return [(run, name) for run, name in rows]
|
||||
|
||||
|
||||
def create_approval_task(session: Session, data: ApprovalCreate) -> ApprovalTask:
|
||||
run = session.get(FlowRun, data.run_id)
|
||||
if run is None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue