fix(broker): fix share_file DB insert failures
Some checks failed
CI / Lint (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled

- 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 <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-04-07 08:56:43 +01:00
parent cdf335f609
commit 3da5d71275

View File

@@ -445,16 +445,20 @@ function handleUploadPost(
: undefined, : 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({ const dbFileId = await uploadFile({
meshId, meshId,
name: fileName, name: fileName,
sizeBytes: body.length, sizeBytes: body.length,
mimeType: (req.headers["content-type"] as string) || undefined, mimeType: (req.headers["content-type"] as string) || undefined,
minioKey, minioKey,
tags, tags: Array.isArray(tags) ? tags : [],
persistent, persistent,
uploadedByMember: memberId, uploadedByName: memberId || undefined,
uploadedByMember: undefined,
targetSpec: targetSpec || undefined, targetSpec: targetSpec || undefined,
}); });