Skip to content

Commit 52ad568

Browse files
chulanovskyi-bspdesmaretsVitaliiBedletskyiserhii-filonenko
authored
HCK-7863: added vector type (#127)
* Added config for vector data type and vector index methods * fix vector config * chore: untangling dependencies * chore: untangling dependencies (finished) * fix: proper keyword for Subtype * fix: missing function * feat: added `vector` type to generated FE script * fix: appropriate dimension in all cases * fix: removed type explicit decorator * feat: added `Default` property, simplified subtypes * fix: normalized behavior in DTD, handled the polyglot derive * Update forward_engineering/alterScript/alterScriptHelpers/alterContainerHelper.js Co-authored-by: Serhii Filonenko <91055067+serhii-filonenko@users.noreply.github.com> * Update forward_engineering/alterScript/alterScriptHelpers/alterContainerHelper.js Co-authored-by: Serhii Filonenko <91055067+serhii-filonenko@users.noreply.github.com> * fix: type from columnDefinition --------- Co-authored-by: pdesmarets <pascal@desmarets.org> Co-authored-by: Vitalii Bedletskyi <vitalii.bedletskyi@hackolade.com> Co-authored-by: Serhii Filonenko <91055067+serhii-filonenko@users.noreply.github.com>
1 parent 910617d commit 52ad568

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+2947
-2794
lines changed

forward_engineering/alterScript/alterScriptBuilder.js

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
const { getAlterScriptDtos } = require('./alterScriptFromDeltaHelper');
2-
32
const { AlterScriptDto } = require('./types/AlterScriptDto');
3+
const { commentIfDeactivated } = require('../utils/general');
44

55
/**
6-
* @return {(dtos: AlterScriptDto[], shouldApplyDropStatements: boolean) => string}
6+
* @param {AlterScriptDto[]} dtos
7+
* @param {boolean} shouldApplyDropStatements
8+
* @return {string}
79
* */
8-
const joinAlterScriptDtosIntoScript = _ => (dtos, shouldApplyDropStatements) => {
9-
const { commentIfDeactivated } = require('../utils/general');
10+
const joinAlterScriptDtosIntoScript = (dtos, shouldApplyDropStatements) => {
1011
return dtos
1112
.map(dto => {
1213
if (dto.isActivated === false) {
@@ -40,13 +41,12 @@ const joinAlterScriptDtosIntoScript = _ => (dtos, shouldApplyDropStatements) =>
4041
* @return {string}
4142
* */
4243
const buildEntityLevelAlterScript = (data, app) => {
43-
const _ = app.require('lodash');
4444
const alterScriptDtos = getAlterScriptDtos(data, app);
4545
const shouldApplyDropStatements = data.options?.additionalOptions?.some(
4646
option => option.id === 'applyDropStatements' && option.value,
4747
);
4848

49-
return joinAlterScriptDtosIntoScript(_)(alterScriptDtos, shouldApplyDropStatements);
49+
return joinAlterScriptDtosIntoScript(alterScriptDtos, shouldApplyDropStatements);
5050
};
5151

5252
/**
@@ -78,13 +78,12 @@ const mapCoreDataForContainerLevelScripts = data => {
7878
* */
7979
const buildContainerLevelAlterScript = (data, app) => {
8080
const preparedData = mapCoreDataForContainerLevelScripts(data);
81-
const _ = app.require('lodash');
8281
const alterScriptDtos = getAlterScriptDtos(preparedData, app);
8382
const shouldApplyDropStatements = preparedData.options?.additionalOptions?.some(
8483
option => option.id === 'applyDropStatements' && option.value,
8584
);
8685

87-
return joinAlterScriptDtosIntoScript(_)(alterScriptDtos, shouldApplyDropStatements);
86+
return joinAlterScriptDtosIntoScript(alterScriptDtos, shouldApplyDropStatements);
8887
};
8988

9089
/**

forward_engineering/alterScript/alterScriptFromDeltaHelper.js

+34-21
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const _ = require('lodash');
12
const {
23
getAddContainerScriptDto,
34
getDeleteContainerScriptDto,
@@ -39,29 +40,30 @@ const {
3940

4041
/**
4142
* @param dto {{
42-
* collection: Object,
43-
* app: App,
43+
* collection: Object
4444
* }}
4545
* @return {AlterScriptDto[]}
4646
* */
47-
const getAlterContainersScriptDtos = ({ collection, app }) => {
47+
const getAlterContainersScriptDtos = ({ collection }) => {
4848
const addedContainers = collection.properties?.containers?.properties?.added?.items;
4949
const deletedContainers = collection.properties?.containers?.properties?.deleted?.items;
5050
const modifiedContainers = collection.properties?.containers?.properties?.modified?.items;
5151

5252
const addContainersScriptDtos = []
5353
.concat(addedContainers)
5454
.filter(Boolean)
55-
.map(container => getAddContainerScriptDto(app)(Object.keys(container.properties)[0]));
55+
.map(container => getAddContainerScriptDto(Object.keys(container.properties)[0]));
56+
5657
const deleteContainersScriptDtos = []
5758
.concat(deletedContainers)
5859
.filter(Boolean)
59-
.map(container => getDeleteContainerScriptDto(app)(Object.keys(container.properties)[0]));
60+
.map(container => getDeleteContainerScriptDto(Object.keys(container.properties)[0]));
61+
6062
const modifyContainersScriptDtos = []
6163
.concat(modifiedContainers)
6264
.filter(Boolean)
6365
.map(containerWrapper => Object.values(containerWrapper.properties)[0])
64-
.flatMap(container => getModifyContainerScriptDtos(app)(container));
66+
.flatMap(container => getModifyContainerScriptDtos(container));
6567

6668
return [...addContainersScriptDtos, ...deleteContainersScriptDtos, ...modifyContainersScriptDtos].filter(Boolean);
6769
};
@@ -103,18 +105,23 @@ const getAlterCollectionsScriptDtos = ({
103105
const createCollectionsScriptDtos = createScriptsData
104106
.filter(collection => collection.compMod?.created)
105107
.map(getAddCollectionScriptDto({ app, dbVersion, modelDefinitions, internalDefinitions, externalDefinitions }));
108+
106109
const deleteCollectionScriptDtos = deleteScriptsData
107110
.filter(collection => collection.compMod?.deleted)
108111
.map(getDeleteCollectionScriptDto(app));
109-
const modifyCollectionScriptDtos = modifyScriptsData.flatMap(getModifyCollectionScriptDtos({ app, dbVersion }));
112+
113+
const modifyCollectionScriptDtos = modifyScriptsData.flatMap(getModifyCollectionScriptDtos({ dbVersion }));
114+
110115
const addColumnScriptDtos = createScriptsData
111116
.filter(item => !item?.compMod?.created)
112117
.flatMap(
113118
getAddColumnScriptDtos({ app, dbVersion, modelDefinitions, internalDefinitions, externalDefinitions }),
114119
);
120+
115121
const deleteColumnScriptDtos = deleteScriptsData
116122
.filter(item => !item?.compMod?.deleted)
117123
.flatMap(getDeleteColumnScriptDtos(app));
124+
118125
const modifyColumnScriptDtos = modifyScriptsData.flatMap(
119126
getModifyColumnScriptDtos({ app, dbVersion, modelDefinitions, internalDefinitions, externalDefinitions }),
120127
);
@@ -155,7 +162,7 @@ const getAlterViewScriptDtos = (collection, app) => {
155162
.filter(Boolean)
156163
.map(viewWrapper => Object.values(viewWrapper.properties)[0])
157164
.map(view => ({ ...view, ...(view.role || {}) }))
158-
.flatMap(view => getModifyViewScriptDtos(app)(view));
165+
.flatMap(view => getModifyViewScriptDtos(view));
159166

160167
return [...deleteViewsScriptDtos, ...createViewsScriptDtos, ...modifyViewsScriptDtos].filter(Boolean);
161168
};
@@ -183,22 +190,24 @@ const getAlterModelDefinitionsScriptDtos = ({
183190
.concat(collection.properties?.modelDefinitions?.properties?.added?.items)
184191
.filter(Boolean)
185192
.map(item => Object.values(item.properties)[0])
186-
.map(item => ({ ...item, ...(app.require('lodash').omit(item.role, 'properties') || {}) }))
193+
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
187194
.filter(item => item.compMod?.created)
188195
.map(getCreateUdtScriptDto({ app, dbVersion, modelDefinitions, internalDefinitions, externalDefinitions }));
196+
189197
const deleteUdtScriptDtos = []
190198
.concat(collection.properties?.modelDefinitions?.properties?.deleted?.items)
191199
.filter(Boolean)
192200
.map(item => Object.values(item.properties)[0])
193-
.map(item => ({ ...item, ...(app.require('lodash').omit(item.role, 'properties') || {}) }))
201+
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
194202
.filter(collection => collection.compMod?.deleted)
195203
.map(getDeleteUdtScriptDto(app));
204+
196205
const addColumnScriptDtos = []
197206
.concat(collection.properties?.modelDefinitions?.properties?.added?.items)
198207
.filter(Boolean)
199208
.map(item => Object.values(item.properties)[0])
200209
.filter(item => !item.compMod)
201-
.map(item => ({ ...item, ...(app.require('lodash').omit(item.role, 'properties') || {}) }))
210+
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
202211
.filter(item => item.childType === 'composite')
203212
.flatMap(
204213
getAddColumnToTypeScriptDtos({
@@ -209,12 +218,13 @@ const getAlterModelDefinitionsScriptDtos = ({
209218
externalDefinitions,
210219
}),
211220
);
221+
212222
const deleteColumnScriptDtos = []
213223
.concat(collection.properties?.modelDefinitions?.properties?.deleted?.items)
214224
.filter(Boolean)
215225
.map(item => Object.values(item.properties)[0])
216226
.filter(item => !item.compMod)
217-
.map(item => ({ ...item, ...(app.require('lodash').omit(item.role, 'properties') || {}) }))
227+
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
218228
.filter(item => item.childType === 'composite')
219229
.flatMap(getDeleteColumnFromTypeScriptDtos(app));
220230

@@ -223,7 +233,7 @@ const getAlterModelDefinitionsScriptDtos = ({
223233
.filter(Boolean)
224234
.map(item => Object.values(item.properties)[0])
225235
.filter(item => !item.compMod)
226-
.map(item => ({ ...item, ...(app.require('lodash').omit(item.role, 'properties') || {}) }))
236+
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
227237
.filter(item => item.childType === 'composite')
228238
.flatMap(getModifyColumnOfTypeScriptDtos(app));
229239

@@ -240,28 +250,29 @@ const getAlterModelDefinitionsScriptDtos = ({
240250
* @return Array<AlterScriptDto>
241251
* */
242252
const getAlterRelationshipsScriptDtos = ({ collection, app }) => {
243-
const _ = app.require('lodash');
244253
const ddlProvider = require('../ddlProvider/ddlProvider')(null, null, app);
245254

246255
const addedRelationships = []
247256
.concat(collection.properties?.relationships?.properties?.added?.items)
248257
.filter(Boolean)
249258
.map(item => Object.values(item.properties)[0])
250259
.filter(relationship => relationship?.role?.compMod?.created);
260+
251261
const deletedRelationships = []
252262
.concat(collection.properties?.relationships?.properties?.deleted?.items)
253263
.filter(Boolean)
254264
.map(item => Object.values(item.properties)[0])
255265
.filter(relationship => relationship?.role?.compMod?.deleted);
266+
256267
const modifiedRelationships = []
257268
.concat(collection.properties?.relationships?.properties?.modified?.items)
258269
.filter(Boolean)
259270
.map(item => Object.values(item.properties)[0])
260271
.filter(relationship => relationship?.role?.compMod?.modified);
261272

262-
const deleteFkScriptDtos = getDeleteForeignKeyScriptDtos(ddlProvider, _)(deletedRelationships);
263-
const addFkScriptDtos = getAddForeignKeyScriptDtos(ddlProvider, _)(addedRelationships);
264-
const modifiedFkScriptDtos = getModifyForeignKeyScriptDtos(ddlProvider, _)(modifiedRelationships);
273+
const deleteFkScriptDtos = getDeleteForeignKeyScriptDtos(ddlProvider)(deletedRelationships);
274+
const addFkScriptDtos = getAddForeignKeyScriptDtos(ddlProvider)(addedRelationships);
275+
const modifiedFkScriptDtos = getModifyForeignKeyScriptDtos(ddlProvider)(modifiedRelationships);
265276

266277
return [...deleteFkScriptDtos, ...addFkScriptDtos, ...modifiedFkScriptDtos].filter(Boolean);
267278
};
@@ -308,17 +319,19 @@ const getAlterContainersSequencesScriptDtos = ({ collection, app }) => {
308319
.concat(addedContainers)
309320
.filter(Boolean)
310321
.map(container => Object.values(container.properties)[0])
311-
.flatMap(container => getAddContainerSequencesScriptDtos({ app })({ container }));
322+
.flatMap(container => getAddContainerSequencesScriptDtos({ container }));
323+
312324
const deleteContainersScriptDtos = []
313325
.concat(deletedContainers)
314326
.filter(Boolean)
315327
.map(container => Object.values(container.properties)[0])
316-
.flatMap(container => getDeleteContainerSequencesScriptDtos({ app })({ container }));
328+
.flatMap(container => getDeleteContainerSequencesScriptDtos({ container }));
329+
317330
const modifyContainersScriptDtos = []
318331
.concat(modifiedContainers)
319332
.filter(Boolean)
320333
.map(container => Object.values(container.properties)[0])
321-
.flatMap(container => getModifyContainerSequencesScriptDtos({ app })({ container }));
334+
.flatMap(container => getModifyContainerSequencesScriptDtos({ container }));
322335

323336
return [...addContainersSequencesScriptDtos, ...deleteContainersScriptDtos, ...modifyContainersScriptDtos].filter(
324337
Boolean,
@@ -342,7 +355,7 @@ const getAlterScriptDtos = (data, app) => {
342355
const internalDefinitions = JSON.parse(data.internalDefinitions);
343356
const externalDefinitions = JSON.parse(data.externalDefinitions);
344357
const dbVersion = data.modelData[0]?.dbVersion;
345-
const containersScriptDtos = getAlterContainersScriptDtos({ collection, app });
358+
const containersScriptDtos = getAlterContainersScriptDtos({ collection });
346359
const collectionsScriptDtos = getAlterCollectionsScriptDtos({
347360
collection,
348361
app,

forward_engineering/alterScript/alterScriptHelpers/alterContainerHelper.js

+38-19
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,56 @@
1+
const _ = require('lodash');
12
const { getModifySchemaCommentsScriptDtos } = require('./containerHelpers/commentsHelper');
23
const { AlterScriptDto } = require('../types/AlterScriptDto');
4+
const assignTemplates = require('../../utils/assignTemplates');
5+
const templates = require('../../ddlProvider/templates');
6+
const { wrapInQuotes } = require('../../utils/general');
37

48
/**
5-
* @return {(containerName: string) => AlterScriptDto | undefined}
9+
* @param {string} schemaName
10+
* @return {AlterScriptDto | undefined}
611
* */
7-
const getAddContainerScriptDto = app => containerName => {
8-
const _ = app.require('lodash');
9-
const ddlProvider = require('../../ddlProvider/ddlProvider')(null, null, app);
10-
const { wrapInQuotes } = require('../../utils/general');
11-
const script = ddlProvider.createSchemaOnly(wrapInQuotes(containerName));
12-
return AlterScriptDto.getInstance([script], true, false);
12+
const createSchemaOnly = schemaName => {
13+
const templateConfig = {
14+
schemaName,
15+
};
16+
return assignTemplates(templates.createSchemaOnly, templateConfig);
1317
};
1418

1519
/**
16-
* @return {(containerName: string) => AlterScriptDto | undefined}
20+
* @param {string} schemaName
21+
* @return {AlterScriptDto | undefined}
1722
* */
18-
const getDeleteContainerScriptDto = app => containerName => {
19-
const _ = app.require('lodash');
20-
const ddlProvider = require('../../ddlProvider/ddlProvider')(null, null, app);
21-
const { wrapInQuotes } = require('../../utils/general');
23+
const dropSchema = schemaName => {
24+
const templateConfig = {
25+
schemaName,
26+
};
27+
return assignTemplates(templates.dropSchema, templateConfig);
28+
};
2229

23-
const script = ddlProvider.dropSchema(wrapInQuotes(containerName));
24-
return AlterScriptDto.getInstance([script], true, true);
30+
/**
31+
* @param {string} containerName
32+
* @return {AlterScriptDto | undefined}
33+
* */
34+
const getAddContainerScriptDto = containerName => {
35+
const script = createSchemaOnly(wrapInQuotes(containerName));
36+
return AlterScriptDto.getInstance([script], true, false);
2537
};
2638

2739
/**
28-
* @return {(container: Object) => Array<AlterScriptDto>}
40+
* @param {string} containerName
41+
* @return {AlterScriptDto | undefined}
2942
* */
30-
const getModifyContainerScriptDtos = app => container => {
31-
const _ = app.require('lodash');
32-
const ddlProvider = require('../../ddlProvider/ddlProvider')(null, null, app);
43+
const getDeleteContainerScriptDto = containerName => {
44+
const script = dropSchema(wrapInQuotes(containerName));
45+
return AlterScriptDto.getInstance([script], true, true);
46+
};
3347

34-
const modifyCommentScriptDtos = getModifySchemaCommentsScriptDtos(_, ddlProvider)(container);
48+
/**
49+
* @param {Object} container
50+
* @return {Array<AlterScriptDto>}
51+
* */
52+
const getModifyContainerScriptDtos = container => {
53+
const modifyCommentScriptDtos = getModifySchemaCommentsScriptDtos(container);
3554

3655
return [...modifyCommentScriptDtos];
3756
};

0 commit comments

Comments
 (0)