Skip to content

Commit

Permalink
Merge pull request #357 from nestjsx/fix/swagger-comatibility
Browse files Browse the repository at this point in the history
fix(crud): responses have old swagger version compatibility
  • Loading branch information
michaelyali committed Dec 21, 2019
2 parents 674957d + 8370eee commit a67edf2
Showing 1 changed file with 51 additions and 2 deletions.
53 changes: 51 additions & 2 deletions packages/crud/src/crud/swagger.helper.ts
Expand Up @@ -87,11 +87,21 @@ export class Swagger {
/* istanbul ignore else */
if (swagger) {
const { routes, query } = options;
const oldVersion = Swagger.getSwaggerVersion() < 4;

switch (name) {
case 'getOneBase':
return { [HttpStatus.OK]: { type: swaggerModels.get } };
case 'getManyBase':
/* istanbul ignore if */
if (oldVersion) {
return {
[HttpStatus.OK]: {
type: swaggerModels.getMany,
},
};
}

return {
[HttpStatus.OK]: query.alwaysPaginate
? { type: swaggerModels.getMany }
Expand All @@ -108,12 +118,31 @@ export class Swagger {
},
};
case 'createOneBase':
/* istanbul ignore if */
if (oldVersion) {
return {
[HttpStatus.OK]: {
type: swaggerModels.create,
},
};
}

return {
[HttpStatus.CREATED]: {
schema: { $ref: swagger.getSchemaPath(swaggerModels.create.name) },
},
};
case 'createManyBase':
/* istanbul ignore if */
if (oldVersion) {
return {
[HttpStatus.OK]: {
type: swaggerModels.create,
isArray: true,
},
};
}

return {
[HttpStatus.CREATED]: swaggerModels.createMany
? /* istanbul ignore next */ {
Expand All @@ -127,16 +156,36 @@ export class Swagger {
},
};
case 'deleteOneBase':
/* istanbul ignore if */
if (oldVersion) {
return {
[HttpStatus.OK]: routes.deleteOneBase.returnDeleted
? {
type: swaggerModels.delete,
}
: {},
};
}
return {
[HttpStatus.OK]: routes.deleteOneBase.returnDeleted
? { schema: { $ref: swagger.getSchemaPath(swaggerModels.delete.name) } }
: {},
};
default:
const dtoName = swaggerModels[name.split('OneBase')[0]].name;
const dto = swaggerModels[name.split('OneBase')[0]];

/* istanbul ignore if */
if (oldVersion) {
return {
[HttpStatus.OK]: {
type: dto,
},
};
}

return {
[HttpStatus.OK]: {
schema: { $ref: swagger.getSchemaPath(dtoName) },
schema: { $ref: swagger.getSchemaPath(dto.name) },
},
};
}
Expand Down

0 comments on commit a67edf2

Please sign in to comment.