Skip to content

Commit d8b7030

Browse files
HCK-12319: Script generation options (#125)
* HCK-13867: Script generation options for PK * HCK-13874: script generation options for comments (#126) * HCK-13874: script generation options for comments * fix * fix: var name * HCK-13870: script generation options for UK (#127) * HCK-13870: script generation options for UK * fix version * fix * fix * hotfix: comment shouldn't be in object, it's added later * fix: constraint names (#128)
1 parent 93a1080 commit d8b7030

20 files changed

Lines changed: 1208 additions & 117 deletions

forward_engineering/config.json

Lines changed: 284 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,288 @@
2727
"compMode": {
2828
"entity": true,
2929
"container": true
30-
}
30+
},
31+
"scriptGenerationOptions": [
32+
{
33+
"keyword": "primaryKeys",
34+
"label": "FE_SCRIPT_GENERATION_OPTIONS___PRIMARY_KEYS",
35+
"disabled": false,
36+
"value": {
37+
"inline": {
38+
"default": true,
39+
"disabled": false,
40+
"disabledLabel": ""
41+
},
42+
"separate": {
43+
"default": false,
44+
"disabled": false,
45+
"disabledLabel": ""
46+
},
47+
"ignore": {
48+
"default": false,
49+
"disabled": false,
50+
"disabledLabel": ""
51+
}
52+
},
53+
"adapters": [
54+
{
55+
"dependency": {
56+
"key": "primaryKey",
57+
"valueType": "array"
58+
},
59+
"defaultValue": {
60+
"primaryKey": []
61+
}
62+
},
63+
{
64+
"dependency": {
65+
"type": "or",
66+
"values": [
67+
{
68+
"key": "primaryKey",
69+
"value": true
70+
},
71+
{
72+
"key": "compositePrimaryKey",
73+
"value": true
74+
}
75+
]
76+
},
77+
"defaultValue": {
78+
"primaryKey": false,
79+
"compositePrimaryKey": false,
80+
"required": false
81+
}
82+
}
83+
]
84+
},
85+
{
86+
"keyword": "uniqueConstraints",
87+
"label": "FE_SCRIPT_GENERATION_OPTIONS___UNIQUE_KEYS",
88+
"disabled": false,
89+
"value": {
90+
"inline": {
91+
"default": true,
92+
"disabled": false,
93+
"disabledLabel": ""
94+
},
95+
"separate": {
96+
"default": false,
97+
"disabled": false,
98+
"disabledLabel": ""
99+
},
100+
"ignore": {
101+
"default": false,
102+
"disabled": false,
103+
"disabledLabel": ""
104+
}
105+
},
106+
"adapters": [
107+
{
108+
"dependency": {
109+
"key": "uniqueKey",
110+
"valueType": "array"
111+
},
112+
"defaultValue": {
113+
"uniqueKey": []
114+
}
115+
},
116+
{
117+
"dependency": {
118+
"key": "uniqueKey",
119+
"valueType": "object"
120+
},
121+
"defaultValue": {
122+
"uniqueKey": {}
123+
}
124+
},
125+
{
126+
"dependency": {
127+
"type": "or",
128+
"values": [
129+
{
130+
"key": "unique",
131+
"value": true
132+
},
133+
{
134+
"key": "compositeUniqueKey",
135+
"value": true
136+
},
137+
{
138+
"key": "compMode",
139+
"exist": true
140+
}
141+
]
142+
},
143+
"defaultValue": {
144+
"unique": false,
145+
"compositeUniqueKey": false
146+
}
147+
}
148+
]
149+
},
150+
{
151+
"keyword": "schemaComments",
152+
"label": "FE_SCRIPT_GENERATION_OPTIONS___SCHEMA_COMMENTS",
153+
"disabled": false,
154+
"value": {
155+
"inline": {
156+
"default": true,
157+
"disabled": false,
158+
"disabledLabel": ""
159+
},
160+
"separate": {
161+
"default": false,
162+
"disabled": false,
163+
"disabledLabel": ""
164+
},
165+
"ignore": {
166+
"default": false,
167+
"disabled": false,
168+
"disabledLabel": ""
169+
}
170+
},
171+
"adapters": [
172+
{
173+
"dependency": {
174+
"key": "type",
175+
"value": "bucket"
176+
},
177+
"defaultValue": {
178+
"description": ""
179+
}
180+
}
181+
]
182+
},
183+
{
184+
"keyword": "tableComments",
185+
"label": "FE_SCRIPT_GENERATION_OPTIONS___TABLE_COMMENTS",
186+
"disabled": false,
187+
"value": {
188+
"inline": {
189+
"default": true,
190+
"disabled": false,
191+
"disabledLabel": ""
192+
},
193+
"separate": {
194+
"default": false,
195+
"disabled": false,
196+
"disabledLabel": ""
197+
},
198+
"ignore": {
199+
"default": false,
200+
"disabled": false,
201+
"disabledLabel": ""
202+
}
203+
},
204+
"adapters": [
205+
{
206+
"dependency": {
207+
"type": "and",
208+
"values": [
209+
{
210+
"key": "collectionName",
211+
"exist": true
212+
},
213+
{
214+
"key": "description",
215+
"exist": true
216+
}
217+
]
218+
},
219+
"defaultValue": {
220+
"description": ""
221+
}
222+
}
223+
]
224+
},
225+
{
226+
"keyword": "viewComments",
227+
"label": "FE_SCRIPT_GENERATION_OPTIONS___VIEW_COMMENTS",
228+
"disabled": false,
229+
"value": {
230+
"inline": {
231+
"default": true,
232+
"disabled": false,
233+
"disabledLabel": ""
234+
},
235+
"separate": {
236+
"default": false,
237+
"disabled": false,
238+
"disabledLabel": ""
239+
},
240+
"ignore": {
241+
"default": false,
242+
"disabled": false,
243+
"disabledLabel": ""
244+
}
245+
},
246+
"adapters": [
247+
{
248+
"dependency": {
249+
"key": "viewOn",
250+
"exist": true
251+
},
252+
"defaultValue": {
253+
"description": ""
254+
}
255+
}
256+
]
257+
},
258+
{
259+
"keyword": "columnComments",
260+
"label": "FE_SCRIPT_GENERATION_OPTIONS___COLUMN_COMMENTS",
261+
"disabled": false,
262+
"value": {
263+
"inline": {
264+
"default": true,
265+
"disabled": false,
266+
"disabledLabel": ""
267+
},
268+
"separate": {
269+
"default": false,
270+
"disabled": false,
271+
"disabledLabel": ""
272+
},
273+
"ignore": {
274+
"default": false,
275+
"disabled": false,
276+
"disabledLabel": ""
277+
}
278+
},
279+
"adapters": [
280+
{
281+
"dependency": {
282+
"type": "and",
283+
"values": [
284+
{
285+
"type": "not",
286+
"values": [
287+
{
288+
"key": "type",
289+
"value": "bucket"
290+
}
291+
]
292+
},
293+
{
294+
"key": "collectionName",
295+
"exist": false
296+
},
297+
{
298+
"key": "viewOn",
299+
"exist": false
300+
},
301+
{
302+
"key": "description",
303+
"exist": true
304+
}
305+
]
306+
},
307+
"defaultValue": {
308+
"description": ""
309+
}
310+
}
311+
]
312+
}
313+
]
31314
}

forward_engineering/generateContainerScript.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const { buildScript } = require('./helpers/buildScript');
1010
const { parseEntities } = require('./helpers/parseEntities');
1111
const { getForeignKeys } = require('./helpers/foreignKeyHelper');
1212
const { getWorkloadManagementStatements } = require('./helpers/getWorkloadManagementStatements');
13+
const { getIsPkOrFkConstraintAvailable } = require('./helpers/constraintHelper');
1314

1415
const generateContainerScript = (data, logger, callback, app) => {
1516
try {
@@ -25,7 +26,7 @@ const generateContainerScript = (data, logger, callback, app) => {
2526
);
2627
const relatedSchemas = parseEntities(data.relatedEntities ?? [], data.relatedSchemas);
2728
const areColumnConstraintsAvailable = data.modelData[0].dbVersion.startsWith('3');
28-
const areForeignPrimaryKeyConstraintsAvailable = !data.modelData[0].dbVersion.startsWith('1');
29+
const isPkOrFkConstraintAvailable = getIsPkOrFkConstraintAvailable(data);
2930
const needMinify = _.get(data, 'options.additionalOptions', []).find(option => option.id === 'minify')?.value;
3031

3132
if (data.isUpdateScript) {
@@ -68,17 +69,12 @@ const generateContainerScript = (data, logger, callback, app) => {
6869
];
6970

7071
return result.concat([
71-
getTableStatement(
72-
...args,
73-
null,
74-
areColumnConstraintsAvailable,
75-
areForeignPrimaryKeyConstraintsAvailable,
76-
),
72+
getTableStatement(...args, null, areColumnConstraintsAvailable, isPkOrFkConstraintAvailable),
7773
getIndexes(...args, areColumnConstraintsAvailable),
7874
]);
7975
}, []);
8076

81-
const foreignKeys = getForeignKeys(data, foreignKeyHashTable, areForeignPrimaryKeyConstraintsAvailable);
77+
const foreignKeys = getForeignKeys(data, foreignKeyHashTable, isPkOrFkConstraintAvailable);
8278

8379
callback(
8480
null,

forward_engineering/generateScript.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const { getDatabaseStatement } = require('./helpers/databaseHelper');
55
const { getTableStatement } = require('./helpers/tableHelper');
66
const { getIndexes } = require('./helpers/indexHelper');
77
const { buildScript } = require('./helpers/buildScript');
8+
const { getIsPkOrFkConstraintAvailable } = require('./helpers/constraintHelper');
89

910
const generateScript = (data, logger, callback, app) => {
1011
try {
@@ -15,7 +16,7 @@ const generateScript = (data, logger, callback, app) => {
1516
const containerData = data.containerData;
1617
const entityData = data.entityData;
1718
const areColumnConstraintsAvailable = data.modelData[0].dbVersion.startsWith('3');
18-
const areForeignPrimaryKeyConstraintsAvailable = !data.modelData[0].dbVersion.startsWith('1');
19+
const isPkOrFkConstraintAvailable = getIsPkOrFkConstraintAvailable(data);
1920
const needMinify = _.get(data, 'options.additionalOptions', []).find(option => option.id === 'minify')?.value;
2021

2122
if (data.isUpdateScript) {
@@ -36,7 +37,7 @@ const generateScript = (data, logger, callback, app) => {
3637
[modelDefinitions, internalDefinitions, externalDefinitions],
3738
null,
3839
areColumnConstraintsAvailable,
39-
areForeignPrimaryKeyConstraintsAvailable,
40+
isPkOrFkConstraintAvailable,
4041
),
4142
getIndexes(
4243
containerData,

0 commit comments

Comments
 (0)