Skip to content

Commit 92cf09e

Browse files
HCK-8005: remove trailing comma before last deactivated column (#118)
* HCK-8005: remove trailing comma before last deactivated column * Revert "HCK-8005: remove trailing comma before last deactivated column" This reverts commit 6b30caf. * HCK-8005: remove trailing comma before last deactivated column * HCK-8005: add comma commenting for last activated column statement
1 parent 4fa8409 commit 92cf09e

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

forward_engineering/ddlProvider/ddlProvider.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const defaultTypes = require('../configs/defaultTypes');
22
const descriptors = require('../configs/descriptors');
33
const templates = require('./templates');
44
const { Sequence } = require('../types/schemaSequenceTypes');
5+
const { joinActivatedAndDeactivatedStatements } = require('../utils/joinActivatedAndDeactivatedStatements');
56

67
module.exports = (baseProvider, options, app) => {
78
const _ = app.require('lodash');
@@ -216,12 +217,13 @@ module.exports = (baseProvider, options, app) => {
216217
partitionOf && !keyConstraintsValue && !checkConstraintsValue && !foreignKeyConstraintsString;
217218
const openParenthesis = isEmptyPartitionBody ? '' : '(';
218219
const closeParenthesis = isEmptyPartitionBody ? '' : ')';
220+
const columnStatements = joinActivatedAndDeactivatedStatements({ statements: columns, indent: '\n\t' });
219221

220222
const tableStatement = assignTemplates(template, {
221223
temporary: getTableTemporaryValue(temporary, unlogged),
222224
ifNotExist: ifNotExistStr,
223225
name: tableName,
224-
columnDefinitions: !partitionOf ? '\t' + _.join(columns, ',\n\t') : '',
226+
columnDefinitions: !partitionOf ? '\t' + columnStatements : '',
225227
keyConstraints: keyConstraintsValue,
226228
checkConstraints: checkConstraintsValue,
227229
foreignKeyConstraints: foreignKeyConstraintsString,
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* @param {{
3+
* index: number;
4+
* numberOfStatements: number;
5+
* lastIndexOfActivatedStatement: number;
6+
* delimiter: string;
7+
* }}
8+
* @return {string}
9+
* */
10+
const getDelimiter = ({ index, numberOfStatements, lastIndexOfActivatedStatement, delimiter }) => {
11+
const isLastStatement = index === numberOfStatements - 1;
12+
const isLastActivatedStatement = index === lastIndexOfActivatedStatement;
13+
14+
if (isLastStatement) {
15+
return '';
16+
}
17+
18+
if (isLastActivatedStatement) {
19+
return ' --' + delimiter;
20+
}
21+
22+
return delimiter;
23+
};
24+
25+
/**
26+
* @param {{
27+
* statements?: string[];
28+
* delimiter?: string;
29+
* indent?: string;
30+
* }}
31+
* @return {string}
32+
* */
33+
const joinActivatedAndDeactivatedStatements = ({ statements = [], delimiter = ',', indent = '\n' }) => {
34+
const lastIndexOfActivatedStatement = statements.findLastIndex(statement => !statement.startsWith('--'));
35+
const numberOfStatements = statements.length;
36+
37+
return statements
38+
.map((statement, index) => {
39+
const currentDelimiter = getDelimiter({
40+
index,
41+
numberOfStatements,
42+
lastIndexOfActivatedStatement,
43+
delimiter,
44+
});
45+
46+
return statement + currentDelimiter;
47+
})
48+
.join(indent);
49+
};
50+
51+
module.exports = {
52+
joinActivatedAndDeactivatedStatements,
53+
};

0 commit comments

Comments
 (0)