From b2a6a18675c19ac42c6fac6423f819182d5fb112 Mon Sep 17 00:00:00 2001 From: Todd Brannam Date: Wed, 15 Apr 2020 15:59:12 -0400 Subject: [PATCH] feat(crud): Add enum support to @Crud params ``` enum Company { ELECTRIC = 'electric', WATER = 'water' } @Crud({ model: { type: Company }, params: { companyId: { field: 'company', enum: Company, } } }) ``` Similar to `@ApiParam({ name: 'companyId', enum: Company })` --- packages/crud/src/crud/crud-routes.factory.ts | 2 +- packages/crud/src/crud/swagger.helper.ts | 3 ++- packages/crud/src/interfaces/params-options.interface.ts | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/crud/src/crud/crud-routes.factory.ts b/packages/crud/src/crud/crud-routes.factory.ts index 141079c8..ccb218f2 100644 --- a/packages/crud/src/crud/crud-routes.factory.ts +++ b/packages/crud/src/crud/crud-routes.factory.ts @@ -488,7 +488,7 @@ export class CrudRoutesFactory { {}, ) : this.options.params; - const pathParamsMeta = Swagger.createPathParasmMeta(params); + const pathParamsMeta = Swagger.createPathParamsMeta(params); Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); } diff --git a/packages/crud/src/crud/swagger.helper.ts b/packages/crud/src/crud/swagger.helper.ts index 8e49d625..d7f41e0f 100644 --- a/packages/crud/src/crud/swagger.helper.ts +++ b/packages/crud/src/crud/swagger.helper.ts @@ -212,13 +212,14 @@ export class Swagger { } } - static createPathParasmMeta(options: ParamsOptions): any[] { + static createPathParamsMeta(options: ParamsOptions): any[] { return swaggerConst ? objKeys(options).map((param) => ({ name: param, required: true, in: 'path', type: options[param].type === 'number' ? Number : String, + enum: options[param].enum ? Object.values(options[param].enum) : undefined, })) : /* istanbul ignore next */ []; } diff --git a/packages/crud/src/interfaces/params-options.interface.ts b/packages/crud/src/interfaces/params-options.interface.ts index a16fb868..3cca1e3d 100644 --- a/packages/crud/src/interfaces/params-options.interface.ts +++ b/packages/crud/src/interfaces/params-options.interface.ts @@ -1,3 +1,4 @@ +import { SwaggerEnumType } from '@nestjs/swagger/dist/types/swagger-enum.type'; import { ParamOptionType } from '@nestjsx/crud-request'; export interface ParamsOptions { @@ -7,6 +8,7 @@ export interface ParamsOptions { export interface ParamOption { field?: string; type?: ParamOptionType; + enum?: SwaggerEnumType; primary?: boolean; disabled?: boolean; }