From bbf9ccd0c0ab22dc2fcb401f6202aab2d9c93d7f Mon Sep 17 00:00:00 2001 From: Emanuele Saccomandi <48432054+emajo@users.noreply.github.com> Date: Wed, 11 Oct 2023 07:56:16 +0200 Subject: [PATCH] fixed zapier objects array mapping (#16780) --- .../src/main/resources/zapier/model.mustache | 2 +- .../src/main/resources/zapier/utils.mustache | 4 ++-- samples/client/petstore/zapier/models/Pet.js | 2 +- samples/client/petstore/zapier/utils/utils.js | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/zapier/model.mustache b/modules/openapi-generator/src/main/resources/zapier/model.mustache index 40a1b5b26f5..cf0fb34c677 100644 --- a/modules/openapi-generator/src/main/resources/zapier/model.mustache +++ b/modules/openapi-generator/src/main/resources/zapier/model.mustache @@ -83,7 +83,7 @@ module.exports = { const {keyPrefix} = utils.buildKeyAndLabel(prefix) return { {{#vars}} - '{{baseName}}': {{#isPrimitiveType}}bundle.inputData?.[`${keyPrefix}{{baseName}}`]{{/isPrimitiveType}}{{^isPrimitiveType}}{{^allowableValues}}{{^isArray}}utils.removeIfEmpty({{complexType}}.mapping(bundle, `${keyPrefix}{{baseName}}`)){{/isArray}}{{#isArray}}utils.removeKeyPrefixes(bundle.inputData?.[`${keyPrefix}{{baseName}}`], `${keyPrefix}{{baseName}}`){{/isArray}}{{/allowableValues}}{{#allowableValues}}bundle.inputData?.[`${keyPrefix}{{baseName}}`]{{/allowableValues}}{{/isPrimitiveType}}, + '{{baseName}}': {{#isPrimitiveType}}bundle.inputData?.[`${keyPrefix}{{baseName}}`]{{/isPrimitiveType}}{{^isPrimitiveType}}{{^allowableValues}}{{^isArray}}utils.removeIfEmpty({{complexType}}.mapping(bundle, `${keyPrefix}{{baseName}}`)){{/isArray}}{{#isArray}}{{^isEnumRef}}utils.childMapping(bundle.inputData?.[`${keyPrefix}{{baseName}}`], `${keyPrefix}{{baseName}}`, {{complexType}}){{/isEnumRef}}{{#isEnumRef}}bundle.inputData?.[`${keyPrefix}{{baseName}}`]{{/isEnumRef}}{{/isArray}}{{/allowableValues}}{{#allowableValues}}bundle.inputData?.[`${keyPrefix}{{baseName}}`]{{/allowableValues}}{{/isPrimitiveType}}, {{/vars}} } }, diff --git a/modules/openapi-generator/src/main/resources/zapier/utils.mustache b/modules/openapi-generator/src/main/resources/zapier/utils.mustache index 1eb27ac09e9..a73f00e4778 100644 --- a/modules/openapi-generator/src/main/resources/zapier/utils.mustache +++ b/modules/openapi-generator/src/main/resources/zapier/utils.mustache @@ -1,7 +1,7 @@ const _ = require('lodash') const replacePathParameters = (url) => url.replace(/{([^{}]+)}/g, (keyExpr, key) => `{{bundle.inputData.${key}}}`) -const removeKeyPrefixes = (objectsArray, currentPath) => objectsArray == undefined || typeof objectsArray[0] != 'object' ? objectsArray : objectsArray.map((obj) => Object.keys(obj).reduce((res, key) =>_.set(res, key.replace(`${currentPath}.`, ''), obj[key]), {})) +const childMapping = (objectsArray, prefix, model) => objectsArray.map(object => model.mapping({inputData: object}, prefix)) const removeIfEmpty = (obj) => _.isEmpty(JSON.parse(JSON.stringify(obj))) ? undefined : obj const buildKeyAndLabel = (prefix, isInput = true, isArrayChild = false) => { const keyPrefix = !_.isEmpty(prefix) && (!isArrayChild || isInput) ? `${prefix}${isInput ? '.' : '__'}` : prefix @@ -25,7 +25,7 @@ const searchMiddleware = (action) => { module.exports = { replacePathParameters: replacePathParameters, - removeKeyPrefixes: removeKeyPrefixes, + childMapping: childMapping, removeIfEmpty: removeIfEmpty, buildKeyAndLabel: buildKeyAndLabel, hasSearchRequisites: hasSearchRequisites, diff --git a/samples/client/petstore/zapier/models/Pet.js b/samples/client/petstore/zapier/models/Pet.js index 46fd5c4264b..48467248dd4 100644 --- a/samples/client/petstore/zapier/models/Pet.js +++ b/samples/client/petstore/zapier/models/Pet.js @@ -47,7 +47,7 @@ module.exports = { 'category': utils.removeIfEmpty(Category.mapping(bundle, `${keyPrefix}category`)), 'name': bundle.inputData?.[`${keyPrefix}name`], 'photoUrls': bundle.inputData?.[`${keyPrefix}photoUrls`], - 'tags': utils.removeKeyPrefixes(bundle.inputData?.[`${keyPrefix}tags`], `${keyPrefix}tags`), + 'tags': utils.childMapping(bundle.inputData?.[`${keyPrefix}tags`], `${keyPrefix}tags`, Tag), 'status': bundle.inputData?.[`${keyPrefix}status`], } }, diff --git a/samples/client/petstore/zapier/utils/utils.js b/samples/client/petstore/zapier/utils/utils.js index 1eb27ac09e9..a73f00e4778 100644 --- a/samples/client/petstore/zapier/utils/utils.js +++ b/samples/client/petstore/zapier/utils/utils.js @@ -1,7 +1,7 @@ const _ = require('lodash') const replacePathParameters = (url) => url.replace(/{([^{}]+)}/g, (keyExpr, key) => `{{bundle.inputData.${key}}}`) -const removeKeyPrefixes = (objectsArray, currentPath) => objectsArray == undefined || typeof objectsArray[0] != 'object' ? objectsArray : objectsArray.map((obj) => Object.keys(obj).reduce((res, key) =>_.set(res, key.replace(`${currentPath}.`, ''), obj[key]), {})) +const childMapping = (objectsArray, prefix, model) => objectsArray.map(object => model.mapping({inputData: object}, prefix)) const removeIfEmpty = (obj) => _.isEmpty(JSON.parse(JSON.stringify(obj))) ? undefined : obj const buildKeyAndLabel = (prefix, isInput = true, isArrayChild = false) => { const keyPrefix = !_.isEmpty(prefix) && (!isArrayChild || isInput) ? `${prefix}${isInput ? '.' : '__'}` : prefix @@ -25,7 +25,7 @@ const searchMiddleware = (action) => { module.exports = { replacePathParameters: replacePathParameters, - removeKeyPrefixes: removeKeyPrefixes, + childMapping: childMapping, removeIfEmpty: removeIfEmpty, buildKeyAndLabel: buildKeyAndLabel, hasSearchRequisites: hasSearchRequisites,