From 51cad30c5ae56d471821c0f70a0ca7dfd5756b4d Mon Sep 17 00:00:00 2001 From: Valentino Hudhra <2587839+valentin0h@users.noreply.github.com> Date: Tue, 27 Jan 2026 17:47:22 +0100 Subject: [PATCH] Fix missing encoder in legacy proposal API (#504) --- services/api/src/encoders/decision.ts | 2 +- services/api/src/encoders/legacyDecision.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/services/api/src/encoders/decision.ts b/services/api/src/encoders/decision.ts index 24d8093b0..d10d76385 100644 --- a/services/api/src/encoders/decision.ts +++ b/services/api/src/encoders/decision.ts @@ -389,7 +389,7 @@ export const proposalAttachmentEncoder = createSelectSchema(proposalAttachments) * - `json`: TipTap document fetched from collaboration service * - `html`: Legacy HTML/plain text description from proposalData */ -const documentContentEncoder = z.discriminatedUnion('type', [ +export const documentContentEncoder = z.discriminatedUnion('type', [ z.object({ type: z.literal('json'), content: z.array(z.unknown()), diff --git a/services/api/src/encoders/legacyDecision.ts b/services/api/src/encoders/legacyDecision.ts index 9d3355688..c62bee393 100644 --- a/services/api/src/encoders/legacyDecision.ts +++ b/services/api/src/encoders/legacyDecision.ts @@ -14,6 +14,7 @@ import { createSelectSchema } from 'drizzle-zod'; import { z } from 'zod'; import { attachmentWithUrlEncoder } from './attachments'; +import { documentContentEncoder } from './decision'; import { baseProfileEncoder } from './profiles'; // JSON Schema types @@ -243,6 +244,8 @@ export const legacyProposalEncoder = createSelectSchema(proposals) voteCount: z.number().optional(), // Allocated amount (for results) allocated: z.string().nullable().optional(), + // Document content (TipTap JSON or legacy HTML) + documentContent: documentContentEncoder.optional(), }); // Decision Encoder