fix: add empty success responses (#1600)

This commit is contained in:
David Nguyen
2025-01-20 19:47:39 +11:00
committed by GitHub
parent 7c1e0f34e8
commit 74bb230247
5 changed files with 43 additions and 16 deletions

View File

@ -1,6 +1,5 @@
import { TRPCError } from '@trpc/server';
import { DateTime } from 'luxon';
import { z } from 'zod';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
@ -42,6 +41,7 @@ import {
ZFindDocumentAuditLogsQuerySchema,
ZFindDocumentsRequestSchema,
ZFindDocumentsResponseSchema,
ZGenericSuccessResponse,
ZGetDocumentByIdQuerySchema,
ZGetDocumentByTokenQuerySchema,
ZGetDocumentWithDetailsByIdRequestSchema,
@ -52,6 +52,7 @@ import {
ZSearchDocumentsMutationSchema,
ZSetPasswordForDocumentMutationSchema,
ZSetSigningOrderForDocumentMutationSchema,
ZSuccessResponseSchema,
ZUpdateDocumentRequestSchema,
ZUpdateDocumentResponseSchema,
} from './schema';
@ -326,7 +327,7 @@ export const documentRouter = router({
},
})
.input(ZDeleteDocumentMutationSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId } = input;
@ -339,6 +340,8 @@ export const documentRouter = router({
teamId,
requestMetadata: ctx.metadata,
});
return ZGenericSuccessResponse;
}),
/**
@ -481,18 +484,20 @@ export const documentRouter = router({
},
})
.input(ZResendDocumentMutationSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { documentId, recipients } = input;
return await resendDocument({
await resendDocument({
userId: ctx.user.id,
teamId,
documentId,
recipients,
requestMetadata: ctx.metadata,
});
return ZGenericSuccessResponse;
}),
/**

View File

@ -34,6 +34,19 @@ import {
import { ZCreateRecipientSchema } from '../recipient-router/schema';
/**
* Required for empty responses since we currently can't 201 requests for our openapi setup.
*
* Without this it will throw an error in Speakeasy SDK when it tries to parse an empty response.
*/
export const ZSuccessResponseSchema = z.object({
success: z.literal(true),
});
export const ZGenericSuccessResponse = {
success: true,
} satisfies z.infer<typeof ZSuccessResponseSchema>;
export const ZDocumentTitleSchema = z
.string()
.trim()

View File

@ -1,5 +1,3 @@
import { z } from 'zod';
import { createDocumentFields } from '@documenso/lib/server-only/field/create-document-fields';
import { createTemplateFields } from '@documenso/lib/server-only/field/create-template-fields';
import { deleteDocumentField } from '@documenso/lib/server-only/field/delete-document-field';
@ -13,6 +11,7 @@ import { updateDocumentFields } from '@documenso/lib/server-only/field/update-do
import { updateTemplateFields } from '@documenso/lib/server-only/field/update-template-fields';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
ZCreateDocumentFieldRequestSchema,
@ -200,7 +199,7 @@ export const fieldRouter = router({
},
})
.input(ZDeleteDocumentFieldRequestSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { fieldId } = input;
@ -211,6 +210,8 @@ export const fieldRouter = router({
fieldId,
requestMetadata: ctx.metadata,
});
return ZGenericSuccessResponse;
}),
/**
@ -396,7 +397,7 @@ export const fieldRouter = router({
},
})
.input(ZDeleteTemplateFieldRequestSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { fieldId } = input;
@ -406,6 +407,8 @@ export const fieldRouter = router({
teamId,
fieldId,
});
return ZGenericSuccessResponse;
}),
/**

View File

@ -1,5 +1,3 @@
import { z } from 'zod';
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
import { createDocumentRecipients } from '@documenso/lib/server-only/recipient/create-document-recipients';
@ -13,6 +11,7 @@ import { updateDocumentRecipients } from '@documenso/lib/server-only/recipient/u
import { updateTemplateRecipients } from '@documenso/lib/server-only/recipient/update-template-recipients';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, procedure, router } from '../trpc';
import {
ZCompleteDocumentWithTokenMutationSchema,
@ -200,7 +199,7 @@ export const recipientRouter = router({
},
})
.input(ZDeleteDocumentRecipientRequestSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { recipientId } = input;
@ -211,6 +210,8 @@ export const recipientRouter = router({
recipientId,
requestMetadata: ctx.metadata,
});
return ZGenericSuccessResponse;
}),
/**
@ -391,7 +392,7 @@ export const recipientRouter = router({
},
})
.input(ZDeleteTemplateRecipientRequestSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { recipientId } = input;
@ -401,6 +402,8 @@ export const recipientRouter = router({
userId: ctx.user.id,
teamId,
});
return ZGenericSuccessResponse;
}),
/**

View File

@ -1,5 +1,3 @@
import { z } from 'zod';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
@ -24,6 +22,7 @@ import { toggleTemplateDirectLink } from '@documenso/lib/server-only/template/to
import { updateTemplate } from '@documenso/lib/server-only/template/update-template';
import type { Document } from '@documenso/prisma/client';
import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../document-router/schema';
import { authenticatedProcedure, maybeAuthenticatedProcedure, router } from '../trpc';
import {
ZCreateDocumentFromDirectTemplateRequestSchema,
@ -195,7 +194,7 @@ export const templateRouter = router({
},
})
.input(ZDeleteTemplateMutationSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { templateId } = input;
@ -203,6 +202,8 @@ export const templateRouter = router({
const userId = ctx.user.id;
await deleteTemplate({ userId, id: templateId, teamId });
return ZGenericSuccessResponse;
}),
/**
@ -352,7 +353,7 @@ export const templateRouter = router({
},
})
.input(ZDeleteTemplateDirectLinkRequestSchema)
.output(z.void())
.output(ZSuccessResponseSchema)
.mutation(async ({ input, ctx }) => {
const { teamId } = ctx;
const { templateId } = input;
@ -360,6 +361,8 @@ export const templateRouter = router({
const userId = ctx.user.id;
await deleteTemplateDirectLink({ userId, teamId, templateId });
return ZGenericSuccessResponse;
}),
/**