Skip to content

Commit a0632c6

Browse files
HCK-8008: remove trailing comma before last deactivated column (#77)
* HCK-8008: remove trailing comma before last deactivated column * Revert "HCK-8008: remove trailing comma before last deactivated column" This reverts commit 2f88656. * HCK-8008: remove trailing comma before last deactivated column
1 parent 628c118 commit a0632c6

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

forward_engineering/ddlProvider.js

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

67
const provider = (baseProvider, options, app) => {
78
const _ = app.require('lodash');
@@ -94,11 +95,11 @@ const provider = (baseProvider, options, app) => {
9495
key => key.statement,
9596
);
9697
const keyConstraintsString = generateConstraintsString(dividedKeysConstraints, isActivated);
97-
98+
const columnStatements = joinActivatedAndDeactivatedStatements({ statements: columns, indent: '\n\t' });
9899
const tableStatement = assignTemplates(templates.createTable, {
99100
name: tableName,
100101
external: persistence === 'external' ? ' EXTERNAL' : '',
101-
column_definitions: columns.join(',\n\t'),
102+
column_definitions: columnStatements,
102103
checkConstraints: checkConstraints.length ? ',\n\t' + checkConstraints.join(',\n\t') : '',
103104
foreignKeyConstraints: '',
104105
options: getTableOptions(options),
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)