From 3da5d71275531a91a7c559b9d6b3664a7b6cdd8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Tue, 7 Apr 2026 08:56:43 +0100 Subject: [PATCH] fix(broker): fix share_file DB insert failures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Normalise tags to Array before Drizzle insert (PgArray mapper calls .map() and throws if value is not a standard JS Array) - Use uploadedByName instead of uploadedByMember FK — the X-Member-Id header carries the mesh slug, not a mesh.member primary key Co-Authored-By: Claude Sonnet 4.6 --- apps/broker/src/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/broker/src/index.ts b/apps/broker/src/index.ts index bd9fbd5..360fe7e 100644 --- a/apps/broker/src/index.ts +++ b/apps/broker/src/index.ts @@ -445,16 +445,20 @@ function handleUploadPost( : undefined, ); - // Insert DB row + // Insert DB row — normalise tags to a real JS Array (Drizzle PgArray + // mapper calls .map() on the value; non-Array iterables break it). + // Skip uploadedByMember FK — memberId from the client header is the + // mesh slug, not a mesh.member primary key. const dbFileId = await uploadFile({ meshId, name: fileName, sizeBytes: body.length, mimeType: (req.headers["content-type"] as string) || undefined, minioKey, - tags, + tags: Array.isArray(tags) ? tags : [], persistent, - uploadedByMember: memberId, + uploadedByName: memberId || undefined, + uploadedByMember: undefined, targetSpec: targetSpec || undefined, });