copy folder labels on workspace fork, normalize cleared labels to NULL (#9529)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Ruben Fiszel
2026-06-11 08:07:45 +00:00
committed by GitHub
co-authored by Claude Fable 5
parent 765f50c474
commit ad37eab82b
3 changed files with 21 additions and 16 deletions
@@ -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"
}
+17 -12
View File
@@ -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::<Vec<_>>()
.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::<Vec<_>>()
.join(","),
)),
);
}
}
sqlb.returning("*");
@@ -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,