From fd5d89b56a9e8417c0e18d2fd75b890e86b7c440 Mon Sep 17 00:00:00 2001 From: yacine Bouraroui Date: Wed, 2 Oct 2024 15:40:09 +0200 Subject: [PATCH] reduced columns queried from completed_job --- backend/windmill-queue/src/jobs.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 9c1d953a17..c4f7aeae91 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -146,6 +146,14 @@ pub struct CanceledBy { pub reason: Option, } +#[derive(Debug, sqlx::FromRow)] +pub struct CompletedSubFlow { + pub id: Uuid, + pub flow_status: Option>>, +} + +impl_flow_status_getter!(CompletedSubFlow); + pub async fn cancel_single_job<'c>( username: &str, reason: Option, @@ -2398,7 +2406,7 @@ pub async fn get_result_by_id_from_running_flow( async fn get_completed_flow_node_result_rec( db: &Pool, w_id: &str, - subflows: &[CompletedJob], + subflows: &[CompletedSubFlow], node_id: &str, json_path: Option<&str>, ) -> error::Result>> { @@ -2436,12 +2444,12 @@ async fn get_completed_flow_node_result_rec( ))), }; } else { - /// inefficient - let subflows = sqlx::query_as::<_, CompletedJob>( - "SELECT *, null as labels FROM completed_job WHERE parent_job = $1 AND workspace_id = $2 AND flow_status IS NOT NULL", + let subflows = sqlx::query_as::<_, CompletedSubFlow>( + "SELECT id, flow_status as labels FROM completed_job WHERE parent_job = $1 AND workspace_id = $2 AND flow_status IS NOT NULL", ).bind(subflow.id).bind(w_id).fetch_all(db).await?; - match get_completed_flow_node_result_rec(db, w_id, &subflows, node_id, json_path).await? + match get_completed_flow_node_result_rec(db, w_id, &subflows, node_id, json_path) + .await? { Some(res) => return Ok(Some(res)), None => continue, @@ -2459,8 +2467,8 @@ async fn get_result_by_id_from_original_flow( node_id: &str, json_path: Option<&str>, ) -> error::Result> { - let flow_job = sqlx::query_as::<_, CompletedJob>( - "SELECT *, null as labels FROM completed_job WHERE id = $1 AND workspace_id = $2", + let flow_job = sqlx::query_as::<_, CompletedSubFlow>( + "SELECT id, flow_status FROM completed_job WHERE id = $1 AND workspace_id = $2", ) .bind(completed_flow_id) .bind(w_id)