Skip to content

Commit

Permalink
Merge pull request nestjsx#294 from roland-chernov-akvelon/fix/overri…
Browse files Browse the repository at this point in the history
…de-methods-swagger-meta

Fix override methods Swagger metadata
  • Loading branch information
michaelyali authored Oct 4, 2019
2 parents 27e9ad7 + feb01a6 commit 0cdd3dc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
19 changes: 15 additions & 4 deletions packages/crud/src/crud/crud-routes.factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,14 +230,24 @@ export class CrudRoutesFactory {
const interceptors = R.getInterceptors(this.targetProto[name]);
const baseInterceptors = R.getInterceptors(this.targetProto[override]);
const baseAction = R.getAction(this.targetProto[override]);
const operation = Swagger.getOperation(this.targetProto[name]);
const baseOperation = Swagger.getOperation(this.targetProto[override]);
const swaggerParams = Swagger.getParams(this.targetProto[name]);
const baseSwaggerParams = Swagger.getParams(this.targetProto[override]);
const responseOk = Swagger.getResponseOk(this.targetProto[name]);
const baseResponseOk = Swagger.getResponseOk(this.targetProto[override]);
// set metadata
R.setInterceptors([...baseInterceptors, ...interceptors], this.targetProto[name]);
R.setAction(baseAction, this.targetProto[name]);
Swagger.setOperation(override, this.modelName, this.targetProto[name]);
Swagger.setParams(baseSwaggerParams, this.targetProto[name]);
Swagger.setResponseOk(baseResponseOk, this.targetProto[name]);
Swagger.setOperation({ ...baseOperation, ...operation }, this.targetProto[name]);
Swagger.setParams(
[...baseSwaggerParams, ...swaggerParams],
this.targetProto[name],
);
Swagger.setResponseOk(
{ ...baseResponseOk, ...responseOk },
this.targetProto[name],
);
this.overrideParsedBodyDecorator(override, name);
// enable route
R.setRoute(route, this.targetProto[name]);
Expand Down Expand Up @@ -380,7 +390,8 @@ export class CrudRoutesFactory {
}

private setSwaggerOperation(name: BaseRouteName) {
Swagger.setOperation(name, this.modelName, this.targetProto[name]);
const summary = Swagger.operationsMap(this.modelName)[name];
Swagger.setOperation({ summary }, this.targetProto[name]);
}

private setSwaggerPathParams(name: BaseRouteName) {
Expand Down
5 changes: 2 additions & 3 deletions packages/crud/src/crud/swagger.helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,10 @@ export class Swagger {
};
}

static setOperation(name: BaseRouteName, modelName: string, func: Function) {
static setOperation(metadata: any, func: Function) {
/* istanbul ignore else */
if (swaggerPkg) {
const summary = Swagger.operationsMap(modelName)[name];
R.set(swaggerPkg.DECORATORS.API_OPERATION, { summary }, func);
R.set(swaggerPkg.DECORATORS.API_OPERATION, metadata, func);
}
}

Expand Down

0 comments on commit 0cdd3dc

Please sign in to comment.