Skip to content

Commit

Permalink
fix(api-docs): Fixed requestBody in API docs ZMS-118 (#593)
Browse files Browse the repository at this point in the history
* optimize CPU usage

* fix requestBody issues in API docs generation

* fix requestBody issues for API generation

* Revert "optimize CPU usage"

This reverts commit b4fde61.
  • Loading branch information
NickOvt committed Jan 2, 2024
1 parent 896a7cb commit fae91d1
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions lib/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ const ObjectId = require('mongodb').ObjectId;
const log = require('npmlog');
const addressparser = require('nodemailer/lib/addressparser');

const Joi = require('joi');

let templates = false;

const structuredCloneWrapper = typeof structuredClone === 'function' ? structuredClone : obj => JSON.parse(JSON.stringify(obj));
Expand Down Expand Up @@ -765,6 +767,10 @@ function parseJoiObject(path, joiObject, requestBodyProperties) {
const data = { type: openApiType, description, required: isRequired };
if (format) {
data.format = format;

if (data.format === 'date') {
data.format = 'date-time';
}
}

// enum check
Expand Down Expand Up @@ -974,22 +980,19 @@ module.exports = {

// 5) add requestBody
const applicationType = spec.applicationType || 'application/json';
operationObj.requestBody = {
content: {
[applicationType]: {
schema: {
type: 'object',
properties: {}
}
}
},
required: true
};

for (const reqBodyKey in spec.validationObjs?.requestBody) {
const reqBodyKeyData = spec.validationObjs.requestBody[reqBodyKey];
if (spec.validationObjs?.requestBody && Object.keys(spec.validationObjs.requestBody).length > 0) {
operationObj.requestBody = {
content: {
[applicationType]: {
schema: {}
}
},
required: true
};

parseJoiObject(reqBodyKey, reqBodyKeyData, operationObj.requestBody.content[applicationType].schema.properties);
// convert to Joi object for easier parsing
parseJoiObject('schema', Joi.object(spec.validationObjs?.requestBody), operationObj.requestBody.content[applicationType]);
}

// 6) add parameters (queryParams + pathParams).
Expand Down Expand Up @@ -1070,7 +1073,7 @@ module.exports = {
const innerData = pathData[httpMethod];

// for every requestBody obj
for (const key in innerData.requestBody.content[Object.keys(innerData.requestBody.content)[0]].schema.properties) {
for (const key in innerData?.requestBody?.content[Object.keys(innerData.requestBody.content)[0]].schema.properties) {
const reqBodyData = innerData.requestBody.content[Object.keys(innerData.requestBody.content)[0]].schema.properties[key];

parseComponetsDecoupled(reqBodyData, components.components.schemas);
Expand Down

0 comments on commit fae91d1

Please sign in to comment.