Skip to content

Commit 79a379a

Browse files
feat: upgraded redshift-related packages to latest, eliminated redundant setDependencies module, fixed sonar remarks (#48)
1 parent 1c93381 commit 79a379a

18 files changed

+944
-1008
lines changed

forward_engineering/api.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ const applyToInstanceHelper = require('./helpers/applyToInstanceHelper');
55
const { commentDropStatements } = require('./helpers/commentDropStatements');
66
const { DROP_STATEMENTS } = require('./helpers/constants');
77

8+
// Delete once v7.8.3 is released
9+
const getHiddenKeys = hiddenKeys => [...hiddenKeys, 'password'];
10+
811
module.exports = {
912
generateScript(data, logger, callback, app) {
1013
try {
@@ -52,7 +55,7 @@ module.exports = {
5255

5356
applyToInstance(connectionInfo, logger, cb, app) {
5457
logger.clear();
55-
logger.log('info', connectionInfo, 'connectionInfo', connectionInfo.hiddenKeys);
58+
logger.log('info', connectionInfo, 'connectionInfo', getHiddenKeys(connectionInfo.hiddenKeys));
5659

5760
applyToInstanceHelper
5861
.applyToInstance(connectionInfo, logger, app)
@@ -83,7 +86,7 @@ module.exports = {
8386

8487
logInfo(step, connectionInfo, logger) {
8588
logger.clear();
86-
logger.log('info', connectionInfo, 'connectionInfo', connectionInfo.hiddenKeys);
89+
logger.log('info', connectionInfo, 'connectionInfo', getHiddenKeys(connectionInfo.hiddenKeys));
8790
},
8891

8992
isDropInStatements(data, logger, callback, app) {

forward_engineering/ddlProvider.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
const _ = require('lodash');
2+
13
const defaultTypes = require('./configs/defaultTypes');
24
const templates = require('./configs/templates');
35
const types = require('./configs/types');
6+
const { commentIfDeactivated } = require('./helpers/commentDeactivatedHelper');
7+
const { getTableAttributes, getTableConstraints, getTableLikeConstraint } = require('./helpers/tableHelper');
48

59
module.exports = (baseProvider, options, app) => {
6-
const _ = app.require('lodash');
710
const { hasType } = app.require('@hackolade/ddl-fe-utils').general;
811
const assignTemplates = app.require('@hackolade/ddl-fe-utils').assignTemplates;
912
const {
@@ -30,8 +33,6 @@ module.exports = (baseProvider, options, app) => {
3033
getColumnsDefinitions,
3134
} = require('./helpers/columnDefinitionHelper')(app);
3235
const { generateConstraint } = require('./helpers/constraintHelper')(app);
33-
const commentIfDeactivated = require('./helpers/commentDeactivatedHelper')(app);
34-
const { getTableAttributes, getTableConstraints, getTableLikeConstraint } = require('./helpers/tableHelper')(app);
3536

3637
return {
3738
createDatabase({

forward_engineering/helpers/alterScriptHelpers/alterContainerHelper.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
const _ = require('lodash');
2+
const { modifyGroupItems } = require('./common');
3+
14
module.exports = app => {
2-
const _ = app.require('lodash');
35
const ddlProvider = require('../../ddlProvider')(null, null, app);
46
const { getDbData, getDbName } = app.require('@hackolade/ddl-fe-utils').general;
57
const { hydrateUdf, hydrateProcedure, filterUdf, filterProcedure } = require('../general')(app);
6-
const { modifyGroupItems } = require('./common')(app);
78

89
const getAddContainerScript = containerData => {
910
const constructedDbData = getDbData([containerData]);

forward_engineering/helpers/alterScriptHelpers/alterEntityHelper.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
const _ = require('lodash');
2+
const { checkFieldPropertiesChanged, getCompMod, setTableKeys, getKeys, setNewProperties } = require('./common');
3+
const { createColumnDefinitionBySchema } = require('./createColumnDefinition');
4+
15
module.exports = app => {
2-
const _ = app.require('lodash');
3-
const { getEntityName } = app.require('@hackolade/ddl-fe-utils').general;
4-
const { createColumnDefinitionBySchema } = require('./createColumnDefinition')(_);
6+
const {
7+
generateIdToNameHashTable,
8+
generateIdToActivatedHashTable,
9+
general: { getEntityName },
10+
} = app.require('@hackolade/ddl-fe-utils');
11+
512
const { getCompositeName } = require('../general')(app);
613
const ddlProvider = require('../../ddlProvider')(null, null, app);
7-
const { generateIdToNameHashTable, generateIdToActivatedHashTable } = app.require('@hackolade/ddl-fe-utils');
8-
const { checkFieldPropertiesChanged, getCompMod, setTableKeys, getKeys, setNewProperties } =
9-
require('./common')(app);
1014

1115
const getAddCollectionScript = collection => {
1216
const dbName = collection.compMod.keyspaceName;

forward_engineering/helpers/alterScriptHelpers/alterViewHelper.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
const _ = require('lodash');
2+
13
module.exports = app => {
2-
const _ = app.require('lodash');
34
const { mapProperties } = app.require('@hackolade/ddl-fe-utils');
45
const ddlProvider = require('../../ddlProvider')(null, null, app);
56
const { getCompositeName } = require('../general')(app);
Lines changed: 119 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -1,137 +1,135 @@
1-
module.exports = app => {
2-
const _ = app.require('lodash');
1+
const _ = require('lodash');
32

4-
const checkFieldPropertiesChanged = (compMod, propertiesToCheck) => {
5-
return propertiesToCheck.some(prop => compMod?.oldField[prop] !== compMod?.newField[prop]);
6-
};
3+
const checkFieldPropertiesChanged = (compMod, propertiesToCheck) => {
4+
return propertiesToCheck.some(prop => compMod?.oldField[prop] !== compMod?.newField[prop]);
5+
};
76

8-
const modifyGroupItems = ({ data, key, hydrate, drop, create, filter = Boolean }) => {
9-
const compMod = getCompMod(data);
10-
const parentName = data.code || data.name || data.collectionName;
7+
const modifyGroupItems = ({ data, key, hydrate, drop, create, filter = Boolean }) => {
8+
const compMod = getCompMod(data);
9+
const parentName = data.code || data.name || data.collectionName;
1110

12-
const { removed, added, modified } = getModifiedGroupItems(compMod[key] || {}, hydrate, filter);
11+
const { removed, added, modified } = getModifiedGroupItems(compMod[key] || {}, hydrate, filter);
1312

14-
const removedScripts = removed.map(item => drop(item, parentName));
15-
const addedScripts = added.map(item => create(item, parentName));
16-
const modifiedScripts = modified.map(item => create({ ...item, orReplace: true }, parentName));
13+
const removedScripts = removed.map(item => drop(item, parentName));
14+
const addedScripts = added.map(item => create(item, parentName));
15+
const modifiedScripts = modified.map(item => create({ ...item, orReplace: true }, parentName));
1716

18-
return [].concat(modifiedScripts).concat(removedScripts).concat(addedScripts).filter(Boolean).join('\n\n');
19-
};
17+
return [].concat(modifiedScripts).concat(removedScripts).concat(addedScripts).filter(Boolean).join('\n\n');
18+
};
2019

21-
const getModifiedGroupItems = ({ new: newItems = [], old: oldItems = [] }, hydrate, filter) => {
22-
const oldHydrated = oldItems.map(hydrate).filter(filter);
23-
const newHydrated = newItems.map(hydrate).filter(filter);
24-
25-
const { removed, added, modified } = oldHydrated.reduce(
26-
(accumulator, oldItem) => {
27-
const newItem = newHydrated.find(item => item.name === oldItem.name);
28-
const itemsAreNotEqual = !isGroupItemsEqual(newItem, oldItem);
29-
30-
if (!newItem) {
31-
return {
32-
removed: [...accumulator.removed, oldItem],
33-
modified: accumulator.modified,
34-
added: accumulator.added,
35-
};
36-
}
37-
38-
if (itemsAreNotEqual) {
39-
return {
40-
removed: accumulator.removed,
41-
modified: [...accumulator.modified, newItem],
42-
added: accumulator.added,
43-
};
44-
}
45-
46-
return accumulator;
47-
},
48-
{
49-
removed: [],
50-
modified: [],
51-
added: newHydrated.filter(newItem => !oldHydrated.some(item => item.name === newItem.name)),
52-
},
53-
);
20+
const getModifiedGroupItems = ({ new: newItems = [], old: oldItems = [] }, hydrate, filter) => {
21+
const oldHydrated = oldItems.map(hydrate).filter(filter);
22+
const newHydrated = newItems.map(hydrate).filter(filter);
23+
24+
const { removed, added, modified } = oldHydrated.reduce(
25+
(accumulator, oldItem) => {
26+
const newItem = newHydrated.find(item => item.name === oldItem.name);
27+
const itemsAreNotEqual = !isGroupItemsEqual(newItem, oldItem);
28+
29+
if (!newItem) {
30+
return {
31+
removed: [...accumulator.removed, oldItem],
32+
modified: accumulator.modified,
33+
added: accumulator.added,
34+
};
35+
}
5436

55-
return { removed, added, modified };
56-
};
37+
if (itemsAreNotEqual) {
38+
return {
39+
removed: accumulator.removed,
40+
modified: [...accumulator.modified, newItem],
41+
added: accumulator.added,
42+
};
43+
}
5744

58-
const isGroupItemsEqual = (leftItem, rightItem) => _.isEqual(leftItem, rightItem);
59-
60-
const getCompMod = containerData => containerData.role?.compMod ?? {};
61-
62-
const checkCompModEqual = ({ new: newItem, old: oldItem } = {}) => _.isEqual(newItem, oldItem);
63-
64-
const setTableKeys = (idToNameHashTable, idToActivatedHashTable, table) => {
65-
return {
66-
...table,
67-
distKey: [
68-
{
69-
...(table.distKey?.[0] ?? {}),
70-
compositeDistKey:
71-
table.distKey?.[0]?.compositeDistKey?.map(key => ({
72-
...key,
73-
name: idToNameHashTable[key.keyId],
74-
isActivated: idToActivatedHashTable[key.keyId],
75-
})) || [],
76-
},
77-
],
78-
sortKey: [
79-
{
80-
...(table.sortKey?.[0] ?? {}),
81-
compositeSortKey:
82-
table.sortKey?.[0]?.compositeSortKey?.map(key => ({
83-
...key,
84-
name: idToNameHashTable[key.keyId],
85-
isActivated: idToActivatedHashTable[key.keyId],
86-
})) || [],
87-
},
88-
],
89-
primaryKey: [
90-
{
91-
...(table.primaryKey?.[0] ?? {}),
92-
compositePrimaryKey:
93-
table.primaryKey?.[0]?.compositePrimaryKey?.map(key => ({
94-
...key,
95-
name: idToNameHashTable[key.keyId],
96-
isActivated: idToActivatedHashTable[key.keyId],
97-
})) || [],
98-
},
99-
],
100-
uniqueKey: [
101-
{
102-
...(table.uniqueKey?.[0] ?? {}),
103-
compositeUniqueKey:
104-
table.uniqueKey?.[0]?.compositeUniqueKey?.map(key => ({
105-
...key,
106-
name: idToNameHashTable[key.keyId],
107-
isActivated: idToActivatedHashTable[key.keyId],
108-
})) || [],
109-
},
110-
],
111-
};
112-
};
45+
return accumulator;
46+
},
47+
{
48+
removed: [],
49+
modified: [],
50+
added: newHydrated.filter(newItem => !oldHydrated.some(item => item.name === newItem.name)),
51+
},
52+
);
11353

114-
const getKeys = keys => _.map(keys, 'name');
54+
return { removed, added, modified };
55+
};
11556

116-
const setNewProperties = jsonSchema => {
117-
const compMod = getCompMod(jsonSchema);
57+
const isGroupItemsEqual = (leftItem, rightItem) => _.isEqual(leftItem, rightItem);
11858

119-
return _.toPairs(compMod).reduce((jsonSchema, [key, compMod]) => {
120-
if (compMod.new) {
121-
return { ...jsonSchema, [key]: compMod.new };
122-
}
59+
const getCompMod = containerData => containerData.role?.compMod ?? {};
12360

124-
return jsonSchema;
125-
}, jsonSchema);
126-
};
61+
const checkCompModEqual = ({ new: newItem, old: oldItem } = {}) => _.isEqual(newItem, oldItem);
12762

63+
const setTableKeys = (idToNameHashTable, idToActivatedHashTable, table) => {
12864
return {
129-
checkFieldPropertiesChanged,
130-
getCompMod,
131-
modifyGroupItems,
132-
checkCompModEqual,
133-
setTableKeys,
134-
getKeys,
135-
setNewProperties,
65+
...table,
66+
distKey: [
67+
{
68+
...(table.distKey?.[0] ?? {}),
69+
compositeDistKey:
70+
table.distKey?.[0]?.compositeDistKey?.map(key => ({
71+
...key,
72+
name: idToNameHashTable[key.keyId],
73+
isActivated: idToActivatedHashTable[key.keyId],
74+
})) || [],
75+
},
76+
],
77+
sortKey: [
78+
{
79+
...(table.sortKey?.[0] ?? {}),
80+
compositeSortKey:
81+
table.sortKey?.[0]?.compositeSortKey?.map(key => ({
82+
...key,
83+
name: idToNameHashTable[key.keyId],
84+
isActivated: idToActivatedHashTable[key.keyId],
85+
})) || [],
86+
},
87+
],
88+
primaryKey: [
89+
{
90+
...(table.primaryKey?.[0] ?? {}),
91+
compositePrimaryKey:
92+
table.primaryKey?.[0]?.compositePrimaryKey?.map(key => ({
93+
...key,
94+
name: idToNameHashTable[key.keyId],
95+
isActivated: idToActivatedHashTable[key.keyId],
96+
})) || [],
97+
},
98+
],
99+
uniqueKey: [
100+
{
101+
...(table.uniqueKey?.[0] ?? {}),
102+
compositeUniqueKey:
103+
table.uniqueKey?.[0]?.compositeUniqueKey?.map(key => ({
104+
...key,
105+
name: idToNameHashTable[key.keyId],
106+
isActivated: idToActivatedHashTable[key.keyId],
107+
})) || [],
108+
},
109+
],
136110
};
137111
};
112+
113+
const getKeys = keys => _.map(keys, 'name');
114+
115+
const setNewProperties = jsonSchema => {
116+
const compMod = getCompMod(jsonSchema);
117+
118+
return _.toPairs(compMod).reduce((jsonSchema, [key, compMod]) => {
119+
if (compMod.new) {
120+
return { ...jsonSchema, [key]: compMod.new };
121+
}
122+
123+
return jsonSchema;
124+
}, jsonSchema);
125+
};
126+
127+
module.exports = {
128+
checkFieldPropertiesChanged,
129+
getCompMod,
130+
modifyGroupItems,
131+
checkCompModEqual,
132+
setTableKeys,
133+
getKeys,
134+
setNewProperties,
135+
};

0 commit comments

Comments
 (0)