Skip to content

Commit

Permalink
feat(crud): Add enum support to @crud params
Browse files Browse the repository at this point in the history
```
enum Company {
  ELECTRIC = 'electric',
  WATER = 'water'
}
@crud({
  model: {
    type: Company
  },
  params: {
    companyId: {
      field: 'company',
      enum: Company,
    }
  }
})
```

Similar to `@ApiParam({ name: 'companyId', enum: Company })`
  • Loading branch information
tbrannam committed Apr 15, 2020
1 parent 4bc9673 commit b2a6a18
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 2 deletions.
2 changes: 1 addition & 1 deletion packages/crud/src/crud/crud-routes.factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
}

Expand Down
3 changes: 2 additions & 1 deletion packages/crud/src/crud/swagger.helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 */ [];
}
Expand Down
2 changes: 2 additions & 0 deletions packages/crud/src/interfaces/params-options.interface.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { SwaggerEnumType } from '@nestjs/swagger/dist/types/swagger-enum.type';
import { ParamOptionType } from '@nestjsx/crud-request';

export interface ParamsOptions {
Expand All @@ -7,6 +8,7 @@ export interface ParamsOptions {
export interface ParamOption {
field?: string;
type?: ParamOptionType;
enum?: SwaggerEnumType;
primary?: boolean;
disabled?: boolean;
}

0 comments on commit b2a6a18

Please sign in to comment.