diff --git a/backend/.sqlx/query-ae949d9470fe6687b312fbd9d617d47813a035eb948f0312a8168bb1365607fb.json b/backend/.sqlx/query-4ca364e493dd51d5f83489dc4674eeadcf092b37a20d03d52f2160ca21f79fb0.json similarity index 51% rename from backend/.sqlx/query-ae949d9470fe6687b312fbd9d617d47813a035eb948f0312a8168bb1365607fb.json rename to backend/.sqlx/query-4ca364e493dd51d5f83489dc4674eeadcf092b37a20d03d52f2160ca21f79fb0.json index ff06d78624..f486fdd689 100644 --- a/backend/.sqlx/query-ae949d9470fe6687b312fbd9d617d47813a035eb948f0312a8168bb1365607fb.json +++ b/backend/.sqlx/query-4ca364e493dd51d5f83489dc4674eeadcf092b37a20d03d52f2160ca21f79fb0.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "INSERT INTO folder (workspace_id, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as)\n SELECT $2, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as\n FROM folder\n WHERE workspace_id = $1", + "query": "INSERT INTO folder (workspace_id, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as, labels)\n SELECT $2, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as, labels\n FROM folder\n WHERE workspace_id = $1", "describe": { "columns": [], "parameters": { @@ -11,5 +11,5 @@ }, "nullable": [] }, - "hash": "ae949d9470fe6687b312fbd9d617d47813a035eb948f0312a8168bb1365607fb" + "hash": "4ca364e493dd51d5f83489dc4674eeadcf092b37a20d03d52f2160ca21f79fb0" } diff --git a/backend/windmill-api-groups/src/folders.rs b/backend/windmill-api-groups/src/folders.rs index af2f96ef42..8db0130cb5 100644 --- a/backend/windmill-api-groups/src/folders.rs +++ b/backend/windmill-api-groups/src/folders.rs @@ -293,7 +293,7 @@ async fn create_folder( ng.summary, authed.username, default_permissioned_as, - ng.labels.as_deref() as Option<&[String]> + ng.labels.as_deref().filter(|l| !l.is_empty()) as Option<&[String]> ) .execute(&mut *tx) .await { @@ -472,17 +472,22 @@ async fn update_folder( } if let Some(labels) = ng.labels.as_ref() { - sqlb.set( - "labels", - "?".bind(&format!( - "{{{}}}", - labels - .iter() - .map(|x| format!("\"{}\"", x.replace('\\', "\\\\").replace('"', "\\\""))) - .collect::>() - .join(","), - )), - ); + if labels.is_empty() { + // normalize cleared labels to NULL so the field stays out of API/tarball output + sqlb.set("labels", "NULL"); + } else { + sqlb.set( + "labels", + "?".bind(&format!( + "{{{}}}", + labels + .iter() + .map(|x| format!("\"{}\"", x.replace('\\', "\\\\").replace('"', "\\\""))) + .collect::>() + .join(","), + )), + ); + } } sqlb.returning("*"); diff --git a/backend/windmill-api-workspaces/src/workspaces.rs b/backend/windmill-api-workspaces/src/workspaces.rs index 0cace993de..e0037861d3 100644 --- a/backend/windmill-api-workspaces/src/workspaces.rs +++ b/backend/windmill-api-workspaces/src/workspaces.rs @@ -4254,8 +4254,8 @@ async fn clone_folders( target_workspace_id: &str, ) -> Result<()> { sqlx::query!( - "INSERT INTO folder (workspace_id, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as) - SELECT $2, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as + "INSERT INTO folder (workspace_id, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as, labels) + SELECT $2, name, display_name, owners, extra_perms, summary, edited_at, created_by, default_permissioned_as, labels FROM folder WHERE workspace_id = $1", source_workspace_id,