From ead1592399d832039e3e866c554529dfd25a7af9 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 19 Mar 2025 10:09:41 +0100 Subject: [PATCH] fix: fix delete completed job --- ...a2aa1e4c11d4860894e9e661b6ee3bccd8522.json | 24 +++++++++++++++++++ backend/windmill-api/src/jobs.rs | 22 +++++++---------- 2 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 backend/.sqlx/query-51ef2ee9dc252f7accc41b89d13a2aa1e4c11d4860894e9e661b6ee3bccd8522.json diff --git a/backend/.sqlx/query-51ef2ee9dc252f7accc41b89d13a2aa1e4c11d4860894e9e661b6ee3bccd8522.json b/backend/.sqlx/query-51ef2ee9dc252f7accc41b89d13a2aa1e4c11d4860894e9e661b6ee3bccd8522.json new file mode 100644 index 0000000000..7cd9c5ce22 --- /dev/null +++ b/backend/.sqlx/query-51ef2ee9dc252f7accc41b89d13a2aa1e4c11d4860894e9e661b6ee3bccd8522.json @@ -0,0 +1,24 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE v2_job_completed c SET\n result = NULL,\n deleted = TRUE\n FROM v2_job j\n WHERE c.id = $1\n AND j.id = c.id\n AND c.workspace_id = $2\n AND ($3::TEXT[] IS NULL OR tag = ANY($3))\n RETURNING c.id\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Uuid" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Text", + "TextArray" + ] + }, + "nullable": [ + false + ] + }, + "hash": "51ef2ee9dc252f7accc41b89d13a2aa1e4c11d4860894e9e661b6ee3bccd8522" +} diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 4b5a4f3daf..15da4f29c8 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -5929,6 +5929,7 @@ async fn get_completed_job_result_maybe( async fn delete_completed_job<'a>( authed: ApiAuthed, Extension(user_db): Extension, + Extension(db): Extension, Path((w_id, id)): Path<(String, Uuid)>, ) -> error::Result { check_scopes(&authed, || format!("jobs:deletejob"))?; @@ -5937,9 +5938,8 @@ async fn delete_completed_job<'a>( require_admin(authed.is_admin, &authed.username)?; let tags = get_scope_tags(&authed); - let job_o = sqlx::query_as::<_, CompletedJob>( - "WITH mark_as_deleted AS ( - UPDATE v2_job_completed c SET + let job_o = sqlx::query_scalar!( + "UPDATE v2_job_completed c SET result = NULL, deleted = TRUE FROM v2_job j @@ -5948,15 +5948,15 @@ async fn delete_completed_job<'a>( AND c.workspace_id = $2 AND ($3::TEXT[] IS NULL OR tag = ANY($3)) RETURNING c.id - ) SELECT * FROM v2_as_completed_job WHERE id = (SELECT id FROM mark_as_deleted)", + ", + id, + &w_id, + tags.as_ref().map(|v| v.as_slice()) as Option<&[&str]>, ) - .bind(id) - .bind(&w_id) - .bind(tags.as_ref().map(|v| v.as_slice())) .fetch_optional(&mut *tx) .await?; - let cj = not_found_if_none(job_o, "Completed Job", id.to_string())?; + not_found_if_none(job_o, "Completed Job", id.to_string())?; sqlx::query!("UPDATE v2_job SET args = NULL WHERE id = $1", id) .execute(&mut *tx) @@ -5977,9 +5977,5 @@ async fn delete_completed_job<'a>( .await?; tx.commit().await?; - - let cj = format_completed_job_result(cj); - - let response = Json(cj).into_response(); - Ok(response) + return get_completed_job(OptAuthed(Some(authed)), Extension(db), Path((w_id, id))).await; }