From b95337fcb96b62bab911ffbf7061e21e8d344630 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 31 Jul 2024 02:32:33 +0200 Subject: [PATCH] improve job result deser --- backend/windmill-queue/src/jobs.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 680da98ff8..9af3ff7e22 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -2232,6 +2232,12 @@ pub async fn get_result_by_id( } } +#[derive(FromRow)] +struct FlowJobResult { + leaf_jobs: Option>>, + parent_job: Option, +} + #[async_recursion] pub async fn get_result_by_id_from_running_flow( db: &Pool, @@ -2240,12 +2246,11 @@ pub async fn get_result_by_id_from_running_flow( node_id: &str, json_path: Option, ) -> error::Result> { - let flow_job_result = sqlx::query!( - "SELECT leaf_jobs->$1::text as leaf_jobs, parent_job FROM queue WHERE COALESCE((SELECT root_job FROM queue WHERE id = $2), $2) = id AND workspace_id = $3", - node_id, - flow_id, - w_id, - ) + let flow_job_result = sqlx::query_as::<_, FlowJobResult>( + "SELECT leaf_jobs->$1::text as leaf_jobs, parent_job FROM queue WHERE COALESCE((SELECT root_job FROM queue WHERE id = $2), $2) = id AND workspace_id = $3") + .bind(node_id) + .bind(flow_id) + .bind(w_id) .fetch_optional(db) .await?; @@ -2257,7 +2262,7 @@ pub async fn get_result_by_id_from_running_flow( let job_result = flow_job_result .leaf_jobs - .map(|x| serde_json::from_value(x).ok()) + .map(|x| serde_json::from_str(x.get()).ok()) .flatten(); if job_result.is_none() && flow_job_result.parent_job.is_some() {