From fbafbeca5d9305109f93894850384627d07411e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Wed, 4 Mar 2026 19:36:04 +0100 Subject: [PATCH] fix: pass tags as native arrays not JSON strings in data migration PostgreSQL text[] columns require native array values, not JSON strings. Parse string tags from Directus and pass as JS arrays directly. Co-Authored-By: Claude Sonnet 4.6 --- packages/backend/src/scripts/data-migration.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/backend/src/scripts/data-migration.ts b/packages/backend/src/scripts/data-migration.ts index b28f34d..4f0bdf3 100644 --- a/packages/backend/src/scripts/data-migration.ts +++ b/packages/backend/src/scripts/data-migration.ts @@ -126,7 +126,7 @@ async function migrateUsers() { if (tagsRes.rows[0]?.tags) { tags = Array.isArray(tagsRes.rows[0].tags) ? tagsRes.rows[0].tags - : JSON.parse(tagsRes.rows[0].tags || "[]"); + : JSON.parse(String(tagsRes.rows[0].tags || "[]")); } } catch {} @@ -144,7 +144,7 @@ async function migrateUsers() { user.artist_name, user.slug, user.description, - JSON.stringify(tags), + tags, role, user.avatar, true, @@ -203,7 +203,7 @@ async function migrateArticles() { article.excerpt, article.content, article.image, - Array.isArray(article.tags) ? JSON.stringify(article.tags) : article.tags, + Array.isArray(article.tags) ? article.tags : JSON.parse(String(article.tags || "[]")), article.publish_date, article.author, article.category, @@ -240,7 +240,7 @@ async function migrateVideos() { video.description, video.image, video.movie, - Array.isArray(video.tags) ? JSON.stringify(video.tags) : video.tags, + Array.isArray(video.tags) ? video.tags : JSON.parse(String(video.tags || "[]")), video.upload_date, video.premium, video.featured, @@ -354,7 +354,7 @@ async function migrateRecordings() { : JSON.stringify(recording.device_info), recording.user_id, recording.status, - Array.isArray(recording.tags) ? JSON.stringify(recording.tags) : recording.tags, + Array.isArray(recording.tags) ? recording.tags : JSON.parse(String(recording.tags || "[]")), recording.linked_video, recording.public, recording.original_recording_id,