Skip to content

Commit 9b30f47

Browse files
committed
AB-289-fixed required and depricated param
1 parent fdc0ca2 commit 9b30f47

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

libV2/schemaUtils.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -742,13 +742,15 @@ let QUERYPARAM = 'query',
742742
if (resolvedSchema.type === 'object' && resolvedSchema.properties) {
743743
const schemaDetails = {
744744
type: resolvedSchema.type || 'unknown',
745-
properties: {}
745+
properties: {},
746+
required: []
746747
},
747748
requiredProperties = new Set(resolvedSchema.required || []);
749+
748750
for (let [key, prop] of Object.entries(resolvedSchema.properties)) {
749751
const propertyDetails = {
750752
type: prop.type || 'unknown',
751-
required: requiredProperties.has(key) || parentRequired.has(key),
753+
deprecated: prop.deprecated || false,
752754
enum: prop.enum || undefined,
753755
minLength: prop.minLength || undefined,
754756
maxLength: prop.maxLength || undefined,
@@ -759,19 +761,29 @@ let QUERYPARAM = 'query',
759761
description: prop.description || undefined,
760762
format: prop.format || undefined
761763
};
764+
765+
if (requiredProperties.has(key) || parentRequired.has(key)) {
766+
schemaDetails.required.push(key);
767+
}
762768
if (prop.$ref) {
763-
propertyDetails.properties = processSchema(prop);
769+
propertyDetails.properties = processSchema(prop, parentRequired = requiredProperties);
764770
}
765771
else if (prop.properties) {
766-
let res = processSchema(prop).properties;
767-
propertyDetails.properties = res;
772+
let res = processSchema(prop);
773+
propertyDetails.properties = res.properties;
774+
if (res.required) {
775+
propertyDetails.required = res.required;
776+
}
768777
}
769778
else if (prop.type === 'array' && prop.items) {
770-
propertyDetails.items = processSchema(prop.items);
779+
propertyDetails.items = processSchema(prop.items, parentRequired = requiredProperties);
771780
}
772781

773782
schemaDetails.properties[key] = propertyDetails;
774783
}
784+
if (schemaDetails.required && schemaDetails.required.length === 0) {
785+
schemaDetails.required = undefined;
786+
}
775787
return schemaDetails;
776788
}
777789
else if (resolvedSchema.type === 'array' && resolvedSchema.items) {
@@ -2019,6 +2031,8 @@ let QUERYPARAM = 'query',
20192031
keyName = name;
20202032
properties = {
20212033
type: schema.type || 'unknown',
2034+
required: param.required || false,
2035+
deprecated: param.deprecated || false,
20222036
enum: schema.enum || undefined,
20232037
minLength: schema.minLength || undefined,
20242038
maxLength: schema.maxLength || undefined,
@@ -2078,6 +2092,8 @@ let QUERYPARAM = 'query',
20782092
keyName = name;
20792093
properties = {
20802094
type: schema.type || 'unknown',
2095+
required: param.required || false,
2096+
deprecated: param.deprecated || false,
20812097
enum: schema.enum || undefined,
20822098
minLength: schema.minLength || undefined,
20832099
maxLength: schema.maxLength || undefined,
@@ -2168,6 +2184,8 @@ let QUERYPARAM = 'query',
21682184
keyName = name;
21692185
properties = {
21702186
type: schema.type || 'unknown',
2187+
required: param.required || false,
2188+
deprecated: param.deprecated || false,
21712189
enum: schema.enum || undefined,
21722190
minLength: schema.minLength || undefined,
21732191
maxLength: schema.maxLength || undefined,
@@ -2320,6 +2338,8 @@ let QUERYPARAM = 'query',
23202338
keyName = name;
23212339
properties = {
23222340
type: schema.type || 'unknown',
2341+
required: schema.required || false,
2342+
deprecated: schema.deprecated || false,
23232343
enum: schema.enum || undefined,
23242344
minLength: schema.minLength || undefined,
23252345
maxLength: schema.maxLength || undefined,

test/unit/convertV2WithTypes.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const expect = require('chai').expect,
2323
(acc, [key, value]) => {
2424
acc[key] = {
2525
type: value.type,
26+
deprecated: value.deprecated || false,
2627
enum: value.enum !== null ? value.enum : undefined,
2728
minLength: value.minLength !== null ? value.minLength : undefined,
2829
maxLength: value.maxLength !== null ? value.maxLength : undefined,

0 commit comments

Comments
 (0)