From 89dc4dd4aab73cd33ed5026feaec6502eee2c5de Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 6 Feb 2024 16:40:43 +0100 Subject: [PATCH] nit on txs --- backend/windmill-api/src/apps.rs | 3 +-- backend/windmill-api/src/configs.rs | 5 ----- backend/windmill-api/src/db.rs | 2 +- backend/windmill-api/src/flows.rs | 3 +-- backend/windmill-common/src/db.rs | 14 ++++++++------ 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/backend/windmill-api/src/apps.rs b/backend/windmill-api/src/apps.rs index 65f96807c9..0a95307816 100644 --- a/backend/windmill-api/src/apps.rs +++ b/backend/windmill-api/src/apps.rs @@ -191,13 +191,12 @@ async fn list_search_apps( Path(w_id): Path, Extension(user_db): Extension, ) -> JsonResult> { - let mut tx = user_db.begin(&authed).await?; - #[cfg(feature = "enterprise")] let n = 1000; #[cfg(not(feature = "enterprise"))] let n = 3; + let mut tx = user_db.begin(&authed).await?; let rows = sqlx::query_as!( SearchApp, diff --git a/backend/windmill-api/src/configs.rs b/backend/windmill-api/src/configs.rs index dcb6307304..a8f0748a9d 100644 --- a/backend/windmill-api/src/configs.rs +++ b/backend/windmill-api/src/configs.rs @@ -15,7 +15,6 @@ use axum::{ use serde::{Deserialize, Serialize}; use sqlx::FromRow; use windmill_common::{ - db::UserDB, error::{self}, DB, }; @@ -87,13 +86,9 @@ async fn update_config( async fn delete_config( Path(name): Path, Extension(db): Extension, - Extension(user_db): Extension, authed: ApiAuthed, ) -> error::Result { - let tx = user_db.begin(&authed).await?; - require_super_admin(&db, &authed.email).await?; - tx.commit().await?; let deleted = sqlx::query!("DELETE FROM config WHERE name = $1 RETURNING name", name) .fetch_all(&db) diff --git a/backend/windmill-api/src/db.rs b/backend/windmill-api/src/db.rs index ce60abc94a..dcf46ea534 100644 --- a/backend/windmill-api/src/db.rs +++ b/backend/windmill-api/src/db.rs @@ -115,7 +115,6 @@ async fn windmill_migrations(migrator: &mut CustomMigrator, db: &DB) -> Result<( #[cfg(feature = "enterprise")] { migrator.lock().await?; - let mut tx = db.begin().await?; let has_done_migration = sqlx::query_scalar!( "SELECT EXISTS(SELECT name FROM windmill_migrations WHERE name = 'bypassrls_1')", ) @@ -126,6 +125,7 @@ async fn windmill_migrations(migrator: &mut CustomMigrator, db: &DB) -> Result<( if !has_done_migration { let query = include_str!("../../custom_migrations/bypassrls_1.sql"); tracing::info!("Applying bypassrls_1.sql"); + let mut tx: sqlx::Transaction<'_, Postgres> = db.begin().await?; tx.execute_many(query); tracing::info!("Applied bypassrls_1.sql"); sqlx::query!("INSERT INTO windmill_migrations (name) VALUES ('bypassrls_1')") diff --git a/backend/windmill-api/src/flows.rs b/backend/windmill-api/src/flows.rs index 766d070517..1e2dbd1036 100644 --- a/backend/windmill-api/src/flows.rs +++ b/backend/windmill-api/src/flows.rs @@ -78,13 +78,12 @@ async fn list_search_flows( Path(w_id): Path, Extension(user_db): Extension, ) -> JsonResult> { - let mut tx = user_db.begin(&authed).await?; - #[cfg(feature = "enterprise")] let n = 1000; #[cfg(not(feature = "enterprise"))] let n = 3; + let mut tx = user_db.begin(&authed).await?; let rows = sqlx::query_as!( SearchFlow, diff --git a/backend/windmill-common/src/db.rs b/backend/windmill-common/src/db.rs index 30ae8b72cd..eea9a12802 100644 --- a/backend/windmill-common/src/db.rs +++ b/backend/windmill-common/src/db.rs @@ -68,13 +68,20 @@ impl UserDB { where T: Authable, { - let mut tx = self.db.begin().await?; let user = if authed.is_admin() { "windmill_admin" } else { "windmill_user" }; + let (folders_write, folders_read): &(Vec<_>, Vec<_>) = + &authed.folders().into_iter().partition(|x| x.1); + + let mut folders_read = folders_read.clone(); + folders_read.extend(folders_write.clone()); + + let mut tx = self.db.begin().await?; + sqlx::query(&format!("SET LOCAL ROLE {}", user)) .execute(&mut *tx) .await?; @@ -105,11 +112,6 @@ impl UserDB { .fetch_optional(&mut *tx) .await?; - let (folders_write, folders_read): &(Vec<_>, Vec<_>) = - &authed.folders().into_iter().partition(|x| x.1); - - let mut folders_read = folders_read.clone(); - folders_read.extend(folders_write.clone()); sqlx::query!( "SELECT set_config('session.folders_read', $1, true)", folders_read