From 6b30caf07894627d0d20edc3cab9b658628847b1 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 17 Sep 2024 10:37:11 +0300 Subject: [PATCH 1/4] HCK-8005: remove trailing comma before last deactivated column --- forward_engineering/ddlProvider/ddlProvider.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 4d11a5c..2b04151 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -5,6 +5,7 @@ const { Sequence } = require('../types/schemaSequenceTypes'); module.exports = (baseProvider, options, app) => { const _ = app.require('lodash'); + const { joinActivatedAndDeactivatedStatements } = app.require('@hackolade/ddl-fe-utils'); const { tab, commentIfDeactivated, @@ -216,12 +217,23 @@ module.exports = (baseProvider, options, app) => { partitionOf && !keyConstraintsValue && !checkConstraintsValue && !foreignKeyConstraintsString; const openParenthesis = isEmptyPartitionBody ? '' : '('; const closeParenthesis = isEmptyPartitionBody ? '' : ')'; + const columnStatementDtos = columns.map(column => { + return { + statement: column, + isActivated: !column.startsWith('--'), + }; + }); + const columnStatements = joinActivatedAndDeactivatedStatements({ + statementDtos: columnStatementDtos, + delimiter: ',', + indent: '\n\t', + }); const tableStatement = assignTemplates(template, { temporary: getTableTemporaryValue(temporary, unlogged), ifNotExist: ifNotExistStr, name: tableName, - columnDefinitions: !partitionOf ? '\t' + _.join(columns, ',\n\t') : '', + columnDefinitions: !partitionOf ? '\t' + columnStatements : '', keyConstraints: keyConstraintsValue, checkConstraints: checkConstraintsValue, foreignKeyConstraints: foreignKeyConstraintsString, From 7d365dc285ca5d04decb51fcbff474a670301407 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 17 Sep 2024 15:06:23 +0300 Subject: [PATCH 2/4] Revert "HCK-8005: remove trailing comma before last deactivated column" This reverts commit 6b30caf07894627d0d20edc3cab9b658628847b1. --- forward_engineering/ddlProvider/ddlProvider.js | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 2b04151..4d11a5c 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -5,7 +5,6 @@ const { Sequence } = require('../types/schemaSequenceTypes'); module.exports = (baseProvider, options, app) => { const _ = app.require('lodash'); - const { joinActivatedAndDeactivatedStatements } = app.require('@hackolade/ddl-fe-utils'); const { tab, commentIfDeactivated, @@ -217,23 +216,12 @@ module.exports = (baseProvider, options, app) => { partitionOf && !keyConstraintsValue && !checkConstraintsValue && !foreignKeyConstraintsString; const openParenthesis = isEmptyPartitionBody ? '' : '('; const closeParenthesis = isEmptyPartitionBody ? '' : ')'; - const columnStatementDtos = columns.map(column => { - return { - statement: column, - isActivated: !column.startsWith('--'), - }; - }); - const columnStatements = joinActivatedAndDeactivatedStatements({ - statementDtos: columnStatementDtos, - delimiter: ',', - indent: '\n\t', - }); const tableStatement = assignTemplates(template, { temporary: getTableTemporaryValue(temporary, unlogged), ifNotExist: ifNotExistStr, name: tableName, - columnDefinitions: !partitionOf ? '\t' + columnStatements : '', + columnDefinitions: !partitionOf ? '\t' + _.join(columns, ',\n\t') : '', keyConstraints: keyConstraintsValue, checkConstraints: checkConstraintsValue, foreignKeyConstraints: foreignKeyConstraintsString, From 58a43ad8b671a3b17318d1570adef4b3ebbf7186 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 17 Sep 2024 15:09:05 +0300 Subject: [PATCH 3/4] HCK-8005: remove trailing comma before last deactivated column --- .../ddlProvider/ddlProvider.js | 4 +- .../joinActivatedAndDeactivatedStatements.js | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 forward_engineering/utils/joinActivatedAndDeactivatedStatements.js diff --git a/forward_engineering/ddlProvider/ddlProvider.js b/forward_engineering/ddlProvider/ddlProvider.js index 4d11a5c..b91af1d 100644 --- a/forward_engineering/ddlProvider/ddlProvider.js +++ b/forward_engineering/ddlProvider/ddlProvider.js @@ -2,6 +2,7 @@ const defaultTypes = require('../configs/defaultTypes'); const descriptors = require('../configs/descriptors'); const templates = require('./templates'); const { Sequence } = require('../types/schemaSequenceTypes'); +const { joinActivatedAndDeactivatedStatements } = require('../utils/joinActivatedAndDeactivatedStatements'); module.exports = (baseProvider, options, app) => { const _ = app.require('lodash'); @@ -216,12 +217,13 @@ module.exports = (baseProvider, options, app) => { partitionOf && !keyConstraintsValue && !checkConstraintsValue && !foreignKeyConstraintsString; const openParenthesis = isEmptyPartitionBody ? '' : '('; const closeParenthesis = isEmptyPartitionBody ? '' : ')'; + const columnStatements = joinActivatedAndDeactivatedStatements({ statements: columns, indent: '\n\t' }); const tableStatement = assignTemplates(template, { temporary: getTableTemporaryValue(temporary, unlogged), ifNotExist: ifNotExistStr, name: tableName, - columnDefinitions: !partitionOf ? '\t' + _.join(columns, ',\n\t') : '', + columnDefinitions: !partitionOf ? '\t' + columnStatements : '', keyConstraints: keyConstraintsValue, checkConstraints: checkConstraintsValue, foreignKeyConstraints: foreignKeyConstraintsString, diff --git a/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js b/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js new file mode 100644 index 0000000..0903d81 --- /dev/null +++ b/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js @@ -0,0 +1,49 @@ +/** + * @param {{ + * index: number; + * numberOfStatements: number; + * lastIndexOfActivatedStatement: number; + * delimiter: string; + * }} + * @return {string} + * */ +const getDelimiter = ({ index, numberOfStatements, lastIndexOfActivatedStatement, delimiter }) => { + const isLastStatement = index === numberOfStatements - 1; + const isLastActivatedStatement = index === lastIndexOfActivatedStatement; + + if (isLastStatement || isLastActivatedStatement) { + return ''; + } + + return delimiter; +}; + +/** + * @param {{ + * statements?: string[]; + * delimiter?: string; + * indent?: string; + * }} + * @return {string} + * */ +const joinActivatedAndDeactivatedStatements = ({ statements = [], delimiter = ',', indent = '\n' }) => { + const lastIndexOfActivatedStatement = statements.findLastIndex(statement => !statement.startsWith('--')); + const numberOfStatements = statements.length; + + return statements + .map((statement, index) => { + const currentDelimiter = getDelimiter({ + index, + numberOfStatements, + lastIndexOfActivatedStatement, + delimiter, + }); + + return statement + currentDelimiter; + }) + .join(indent); +}; + +module.exports = { + joinActivatedAndDeactivatedStatements, +}; From dc3c7b5cbc4e2fa8e9f727b2a4dcb17c89b41c7d Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 17 Sep 2024 16:28:14 +0300 Subject: [PATCH 4/4] HCK-8005: add comma commenting for last activated column statement --- .../utils/joinActivatedAndDeactivatedStatements.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js b/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js index 0903d81..440e120 100644 --- a/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js +++ b/forward_engineering/utils/joinActivatedAndDeactivatedStatements.js @@ -11,10 +11,14 @@ const getDelimiter = ({ index, numberOfStatements, lastIndexOfActivatedStatement const isLastStatement = index === numberOfStatements - 1; const isLastActivatedStatement = index === lastIndexOfActivatedStatement; - if (isLastStatement || isLastActivatedStatement) { + if (isLastStatement) { return ''; } + if (isLastActivatedStatement) { + return ' --' + delimiter; + } + return delimiter; };