From d92e16d339c3ebabc004a032a5a445f3aec34bbe Mon Sep 17 00:00:00 2001 From: temz Date: Sat, 27 Nov 2021 15:38:21 +0700 Subject: [PATCH] feat: add responses payload for array types --- lib/filters/index.ts | 2 +- lib/filters/response.exception-filter.ts | 3 ++- lib/index.ts | 2 +- lib/interfaces/index.ts | 2 +- .../response-filter-config.interface.ts | 2 +- lib/interfaces/response-payload.interface.ts | 4 ++-- lib/types/index.ts | 2 +- lib/types/responses-payload.type.ts | 20 +++++++++++++++++++ 8 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 lib/types/responses-payload.type.ts diff --git a/lib/filters/index.ts b/lib/filters/index.ts index 5880a1b..13fad94 100644 --- a/lib/filters/index.ts +++ b/lib/filters/index.ts @@ -1 +1 @@ -export * from './response.exception-filter' \ No newline at end of file +export * from './response.exception-filter' diff --git a/lib/filters/response.exception-filter.ts b/lib/filters/response.exception-filter.ts index 684ed0f..dce9e1e 100644 --- a/lib/filters/response.exception-filter.ts +++ b/lib/filters/response.exception-filter.ts @@ -18,7 +18,8 @@ export class ResponseFilter implements GqlExceptionFilter { const { stack } = this._config - const stackMessage = stack === undefined || stack === true ? exception.stack : undefined + const stackMessage = + stack === undefined || stack === true ? exception.stack : undefined this._logger.error(`${message} (${description})`, exception.stack) diff --git a/lib/index.ts b/lib/index.ts index e358e52..b659a16 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,3 +1,3 @@ export * from './filters' export * from './interfaces' -export * from './types' \ No newline at end of file +export * from './types' diff --git a/lib/interfaces/index.ts b/lib/interfaces/index.ts index dcf9168..fe25266 100644 --- a/lib/interfaces/index.ts +++ b/lib/interfaces/index.ts @@ -1,3 +1,3 @@ export * from './response-error.interface' export * from './response-payload.interface' -export * from './response-filter-config.interface' \ No newline at end of file +export * from './response-filter-config.interface' diff --git a/lib/interfaces/response-filter-config.interface.ts b/lib/interfaces/response-filter-config.interface.ts index fd8e3c0..d6c43bd 100644 --- a/lib/interfaces/response-filter-config.interface.ts +++ b/lib/interfaces/response-filter-config.interface.ts @@ -1,3 +1,3 @@ export interface ResponseFilterConfig { stack?: boolean -} \ No newline at end of file +} diff --git a/lib/interfaces/response-payload.interface.ts b/lib/interfaces/response-payload.interface.ts index 3a122ec..7d90afc 100644 --- a/lib/interfaces/response-payload.interface.ts +++ b/lib/interfaces/response-payload.interface.ts @@ -1,6 +1,6 @@ -import { ResponseError } from "./response-error.interface" +import { ResponseError } from './response-error.interface' export interface ResponsePayload { - data?: T + data?: T | T[] error?: ResponseError } diff --git a/lib/types/index.ts b/lib/types/index.ts index e7d5e2b..ccef166 100644 --- a/lib/types/index.ts +++ b/lib/types/index.ts @@ -1,2 +1,2 @@ export * from './response-error.type' -export * from './response-payload.type' \ No newline at end of file +export * from './response-payload.type' diff --git a/lib/types/responses-payload.type.ts b/lib/types/responses-payload.type.ts new file mode 100644 index 0000000..604dffe --- /dev/null +++ b/lib/types/responses-payload.type.ts @@ -0,0 +1,20 @@ +import { Type } from '@nestjs/common' +import { Field, ObjectType } from '@nestjs/graphql' +import { ResponseError } from '../interfaces/response-error.interface' +import { ResponsePayload } from '../interfaces/response-payload.interface' +import { ResponseErrorType } from './response-error.type' + +export const ResponsePayloadType = ( + classRef: Type, +): Type> => { + @ObjectType('ResponsesPayload', { isAbstract: true }) + class ResponsePayloadType implements ResponsePayload { + @Field(() => [classRef], { nullable: true }) + data?: T[] + + @Field(() => ResponseErrorType, { nullable: true }) + error?: ResponseError + } + + return ResponsePayloadType +}