From a73f92d1896530d8bf1c89372978306938918cf7 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 18 Mar 2025 11:38:01 +0200 Subject: [PATCH 1/2] HCK-10313: fix empty array type structure --- forward_engineering/dbtProvider.js | 3 +-- forward_engineering/helpers/columnHelper.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/forward_engineering/dbtProvider.js b/forward_engineering/dbtProvider.js index 5aeaea9..30aaabb 100644 --- a/forward_engineering/dbtProvider.js +++ b/forward_engineering/dbtProvider.js @@ -21,9 +21,8 @@ class DbtProvider { */ decorateType({ columnDefinition }) { const type = columnHelper.getTypeByProperty([], '')(columnDefinition); - const isComplexType = /^(array|struct)/i.test(type); - return isComplexType ? type.replace(/<[\s\S]+>$/, '<>') : type; + return columnHelper.clearComplexStructure({ type }); } /** diff --git a/forward_engineering/helpers/columnHelper.js b/forward_engineering/helpers/columnHelper.js index 490a34f..0f5d2f7 100644 --- a/forward_engineering/helpers/columnHelper.js +++ b/forward_engineering/helpers/columnHelper.js @@ -385,9 +385,30 @@ const getDescription = (definitions, property) => { return property.refDescription || property.description || definitionDescription; }; +/** + * @param {{ type: string }} + * @returns {string} + */ +const clearComplexStructure = ({ type }) => { + const isArray = /^array/i.test(type); + const isStruct = /^struct/i.test(type); + const isComplexType = isArray || isStruct; + + if (!isComplexType) { + return type; + } + + const structureREgexp = /<([\s\S]+)>$/; + const [, subType] = structureREgexp.exec(type) ?? ['', '']; + const structure = isArray ? clearComplexStructure({ type: subType }) : ''; + + return type.replace(structureREgexp, () => `<${structure}>`); +}; + module.exports = { getColumns, getColumnsStatement, getColumnStatement, getTypeByProperty, + clearComplexStructure, }; From 03b397fb9678647748f8a185d2020ff0a175d4b5 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko <91055067+serhii-filonenko@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:33:37 +0200 Subject: [PATCH 2/2] fix typo Co-authored-by: chulanovskyi-bs <56116665+chulanovskyi-bs@users.noreply.github.com> --- forward_engineering/helpers/columnHelper.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forward_engineering/helpers/columnHelper.js b/forward_engineering/helpers/columnHelper.js index 0f5d2f7..f274725 100644 --- a/forward_engineering/helpers/columnHelper.js +++ b/forward_engineering/helpers/columnHelper.js @@ -398,11 +398,11 @@ const clearComplexStructure = ({ type }) => { return type; } - const structureREgexp = /<([\s\S]+)>$/; - const [, subType] = structureREgexp.exec(type) ?? ['', '']; + const structureRegExp = /<([\s\S]+)>$/; + const [, subType] = structureRegExp.exec(type) ?? ['', '']; const structure = isArray ? clearComplexStructure({ type: subType }) : ''; - return type.replace(structureREgexp, () => `<${structure}>`); + return type.replace(structureRegExp, () => `<${structure}>`); }; module.exports = {