From 0caa347d92cb7d65a3871713b8d492e6fe3b4528 Mon Sep 17 00:00:00 2001 From: Abel Lucas Date: Fri, 24 Jan 2025 09:53:47 +0100 Subject: [PATCH] backend: add `/jobs_u/queue/poll` API --- ...17793866b778b743274faea90965b1ff8ab92.json | 23 +++++++++++++++++++ backend/windmill-api/src/jobs.rs | 18 +++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 backend/.sqlx/query-52a461456416560066e7c77a73e17793866b778b743274faea90965b1ff8ab92.json diff --git a/backend/.sqlx/query-52a461456416560066e7c77a73e17793866b778b743274faea90965b1ff8ab92.json b/backend/.sqlx/query-52a461456416560066e7c77a73e17793866b778b743274faea90965b1ff8ab92.json new file mode 100644 index 0000000000..f004694000 --- /dev/null +++ b/backend/.sqlx/query-52a461456416560066e7c77a73e17793866b778b743274faea90965b1ff8ab92.json @@ -0,0 +1,23 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT id FROM v2_job_queue WHERE id = ANY($1) AND workspace_id = $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Uuid" + } + ], + "parameters": { + "Left": [ + "UuidArray", + "Text" + ] + }, + "nullable": [ + false + ] + }, + "hash": "52a461456416560066e7c77a73e17793866b778b743274faea90965b1ff8ab92" +} diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index d549384afd..5ef6d5b8dc 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -206,6 +206,7 @@ pub fn workspaced_service() -> Router { .route("/queue/list", get(list_queue_jobs)) .route("/queue/count", get(count_queue_jobs)) .route("/queue/list_filtered_uuids", get(list_filtered_uuids)) + .route("/queue/poll", post(poll)) .route("/queue/cancel_selection", post(cancel_selection)) .route("/completed/count", get(count_completed_jobs)) .route("/completed/count_jobs", get(count_completed_jobs_detail)) @@ -1581,6 +1582,23 @@ async fn cancel_selection( cancel_jobs(jobs_to_cancel, &db, authed.username.as_str(), w_id.as_str()).await } +async fn poll( + _authed: ApiAuthed, + Extension(db): Extension, + Path(w_id): Path, + Json(jobs): Json>, +) -> JsonResult> { + sqlx::query_scalar!( + "SELECT id FROM v2_job_queue WHERE id = ANY($1) AND workspace_id = $2", + &jobs, + &w_id + ) + .fetch_all(&db) + .await + .map(Json) + .map_err(Into::into) +} + async fn list_filtered_uuids( authed: ApiAuthed, Extension(db): Extension,