From f707e5fb109008c191279968f0e06dda9cafbfac Mon Sep 17 00:00:00 2001 From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com> Date: Thu, 9 Jan 2025 01:06:17 +0000 Subject: [PATCH] fix: update template field schema (#1575) Co-authored-by: Lucas Smith --- packages/api/v1/implementation.ts | 12 +++++++++--- packages/api/v1/schema.ts | 8 ++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts index 7465433e1..76ba25878 100644 --- a/packages/api/v1/implementation.ts +++ b/packages/api/v1/implementation.ts @@ -1,5 +1,6 @@ import { createNextRoute } from '@ts-rest/next'; import { match } from 'ts-pattern'; +import { z } from 'zod'; import { getServerLimits } from '@documenso/ee/server-only/limits/server'; import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; @@ -36,10 +37,10 @@ import { deleteTemplate } from '@documenso/lib/server-only/template/delete-templ import { findTemplates } from '@documenso/lib/server-only/template/find-templates'; import { getTemplateById } from '@documenso/lib/server-only/template/get-template-by-id'; import { extractDerivedDocumentEmailSettings } from '@documenso/lib/types/document-email'; -import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta'; import { ZCheckboxFieldMeta, ZDropdownFieldMeta, + ZFieldMetaSchema, ZNumberFieldMeta, ZRadioFieldMeta, ZTextFieldMeta, @@ -62,6 +63,7 @@ import { import { ApiContractV1 } from './contract'; import { authenticatedMiddleware } from './middleware/authenticated'; +import { ZTemplateWithDataSchema } from './schema'; export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { getDocuments: authenticatedMiddleware(async (args, user, team) => { @@ -414,9 +416,11 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { teamId: team?.id, }); + const parsed = ZTemplateWithDataSchema.parse(template); + return { status: 200, - body: template, + body: parsed, }; } catch (err) { return AppError.toRestAPIError(err); @@ -435,10 +439,12 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, { teamId: team?.id, }); + const parsed = z.array(ZTemplateWithDataSchema).parse(templates); + return { status: 200, body: { - templates, + templates: parsed, totalPages, }, }; diff --git a/packages/api/v1/schema.ts b/packages/api/v1/schema.ts index dcd06cd5b..c7ec8f5f8 100644 --- a/packages/api/v1/schema.ts +++ b/packages/api/v1/schema.ts @@ -61,6 +61,7 @@ export const ZSuccessfulGetDocumentResponseSchema = ZSuccessfulDocumentResponseS fields: z.lazy(() => ZFieldSchema.pick({ id: true, + documentId: true, recipientId: true, type: true, page: true, @@ -68,6 +69,8 @@ export const ZSuccessfulGetDocumentResponseSchema = ZSuccessfulDocumentResponseS positionY: true, width: true, height: true, + customText: true, + fieldMeta: true, }) .extend({ fieldMeta: ZFieldMetaSchema.nullish(), @@ -524,6 +527,7 @@ export const ZFieldSchema = z.object({ height: z.unknown(), customText: z.string(), inserted: z.boolean(), + fieldMeta: ZFieldMetaSchema.nullish().openapi({}), }); export const ZTemplateWithDataSchema = ZTemplateSchema.extend({ @@ -541,6 +545,8 @@ export const ZTemplateWithDataSchema = ZTemplateSchema.extend({ }), Field: ZFieldSchema.pick({ id: true, + documentId: true, + templateId: true, recipientId: true, type: true, page: true, @@ -548,6 +554,8 @@ export const ZTemplateWithDataSchema = ZTemplateSchema.extend({ positionY: true, width: true, height: true, + customText: true, + fieldMeta: true, }).array(), Recipient: ZRecipientSchema.pick({ id: true,