From acaa11d18b94a5b1bf35a415cf7e6ecbc3bc2fa3 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 31 Jul 2024 01:37:51 +0200 Subject: [PATCH] add limits to variable list --- backend/windmill-api/openapi.yaml | 2 ++ backend/windmill-api/src/variables.rs | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 267ad8210d..ed6fb64e94 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -2444,6 +2444,8 @@ paths: in: query schema: type: string + - $ref: "#/components/parameters/Page" + - $ref: "#/components/parameters/PerPage" responses: "200": description: variable list diff --git a/backend/windmill-api/src/variables.rs b/backend/windmill-api/src/variables.rs index 62c95647ad..04d6e6e827 100644 --- a/backend/windmill-api/src/variables.rs +++ b/backend/windmill-api/src/variables.rs @@ -25,7 +25,7 @@ use windmill_audit::ActionKind; use windmill_common::{ db::UserDB, error::{Error, JsonResult, Result}, - utils::{not_found_if_none, StripPath}, + utils::{not_found_if_none, paginate, Pagination, StripPath}, variables::{ build_crypt, get_reserved_variables, ContextualVariable, CreateVariable, ListableVariable, }, @@ -92,7 +92,10 @@ async fn list_variables( Extension(user_db): Extension, Path(w_id): Path, Query(lq): Query, + Query(pagination): Query, ) -> JsonResult> { + let (per_page, offset) = paginate(pagination); + let mut tx = user_db.begin(&authed).await?; let rows = sqlx::query_as::<_, ListableVariable>( @@ -106,11 +109,15 @@ async fn list_variables( LEFT JOIN resource ON resource.path = variable.path AND resource.workspace_id = $1 WHERE variable.workspace_id = $1 AND variable.path NOT LIKE 'u/' || $2 || '/secret_arg/%' AND variable.path LIKE $3 || '%' - ORDER BY path", + ORDER BY path + LIMIT $4 OFFSET $5 +", ) .bind(&w_id) .bind(&authed.username) .bind(&lq.path_start.unwrap_or_default()) + .bind(per_page as i32) + .bind(offset as i32) .fetch_all(&mut *tx) .await?;