From 3893d971daa420a5f8b58ccc2e5fdee5657c0fde Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Tue, 4 Jul 2023 20:10:39 +0800 Subject: [PATCH] chore: rename rest-api's option from manageCustomResponse to sendResponse --- packages/server/src/express/middleware.ts | 24 +++++++++++-------- packages/server/tests/adapter/express.test.ts | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/server/src/express/middleware.ts b/packages/server/src/express/middleware.ts index 7f7df5ddc..492004a66 100644 --- a/packages/server/src/express/middleware.ts +++ b/packages/server/src/express/middleware.ts @@ -14,14 +14,17 @@ export interface MiddlewareOptions extends AdapterBaseOptions { * Callback for getting a PrismaClient for the given request */ getPrisma: (req: Request, res: Response) => unknown | Promise; + /** - * This option is used to enable/disable the option to manage the response - * by the middleware. If set to true, the middleware will not send the - * response and the user will be responsible for sending the response. + * Controls if the middleware directly sends a response. If set to false, + * the response is stored in the `res.locals` object and then the middleware + * calls the `next()` function to pass the control to the next middleware. + * Subsequent middleware or request handlers need to make sure to send + * a response. * - * Defaults to false; + * Defaults to true; */ - manageCustomResponse?: boolean; + sendResponse?: boolean; } /** @@ -43,9 +46,9 @@ const factory = (options: MiddlewareOptions): Handler => { return async (request, response, next) => { const prisma = (await options.getPrisma(request, response)) as DbClientContract; - const { manageCustomResponse } = options; + const { sendResponse } = options; - if (manageCustomResponse && !prisma) { + if (sendResponse === false && !prisma) { throw new Error('unable to get prisma from request context'); } @@ -69,7 +72,7 @@ const factory = (options: MiddlewareOptions): Handler => { } query = buildUrlQuery(rawQuery, useSuperJson); } catch { - if (manageCustomResponse) { + if (sendResponse === false) { throw new Error('invalid query parameters'); } return response.status(400).json(marshalToObject({ message: 'invalid query parameters' }, useSuperJson)); @@ -86,7 +89,8 @@ const factory = (options: MiddlewareOptions): Handler => { zodSchemas, logger: options.logger, }); - if (manageCustomResponse) { + if (sendResponse === false) { + // attach response and pass control to the next middleware response.locals = { status: r.status, body: r.body, @@ -95,7 +99,7 @@ const factory = (options: MiddlewareOptions): Handler => { } return response.status(r.status).json(marshalToObject(r.body, useSuperJson)); } catch (err) { - if (manageCustomResponse) { + if (sendResponse === false) { throw err; } return response diff --git a/packages/server/tests/adapter/express.test.ts b/packages/server/tests/adapter/express.test.ts index 0a964ef41..7121edcf9 100644 --- a/packages/server/tests/adapter/express.test.ts +++ b/packages/server/tests/adapter/express.test.ts @@ -265,7 +265,7 @@ describe('Express adapter tests - rest handler with customMiddleware', () => { modelMeta, zodSchemas, handler: RESTAPIHandler({ endpoint: 'http://localhost/api' }), - manageCustomResponse: true, + sendResponse: false, }) );