Skip to content

Commit f5d89dd

Browse files
HCK-14275: generate SQL for view column comment (#181)
1 parent 53471a5 commit f5d89dd

File tree

3 files changed

+83
-129
lines changed

3 files changed

+83
-129
lines changed

forward_engineering/alterScript/alterScriptFromDeltaHelper.js

Lines changed: 80 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ const {
3939
getAddContainerSequencesScriptDtos,
4040
} = require('./alterScriptHelpers/containerHelpers/sequencesHelper');
4141
const { isObjectInDeltaModelActivated } = require('../utils/general');
42+
const { getModifiedCommentOnColumnScriptDtos } = require('./alterScriptHelpers/columnHelpers/commentsHelper');
43+
44+
const getItems = data => [data?.items].flat().filter(Boolean);
45+
const getItemProperties = data => getItems(data).map(item => Object.values(item.properties)[0]);
4246

4347
/**
4448
* @param dto {{
@@ -47,31 +51,24 @@ const { isObjectInDeltaModelActivated } = require('../utils/general');
4751
* @return {AlterScriptDto[]}
4852
* */
4953
const getAlterContainersScriptDtos = ({ collection }) => {
50-
const addedContainers = collection.properties?.containers?.properties?.added?.items;
51-
const deletedContainers = collection.properties?.containers?.properties?.deleted?.items;
52-
const modifiedContainers = collection.properties?.containers?.properties?.modified?.items;
54+
const containersData = collection.properties?.containers?.properties;
55+
const addedContainers = getItems(containersData?.added);
56+
const deletedContainers = getItems(containersData?.deleted);
57+
const modifiedContainers = getItems(containersData?.modified);
58+
59+
const addContainersScriptDtos = addedContainers.map(container => {
60+
const [containerName, containerData] = Object.entries(container.properties)[0];
61+
const isActivated = isObjectInDeltaModelActivated(containerData);
62+
return getAddContainerScriptDto(containerName, isActivated);
63+
});
5364

54-
const addContainersScriptDtos = []
55-
.concat(addedContainers)
56-
.filter(Boolean)
57-
.map(container => {
58-
const [containerName, containerData] = Object.entries(container.properties)[0];
59-
const isActivated = isObjectInDeltaModelActivated(containerData);
60-
return getAddContainerScriptDto(containerName, isActivated);
61-
});
62-
63-
const deleteContainersScriptDtos = []
64-
.concat(deletedContainers)
65-
.filter(Boolean)
66-
.map(container => {
67-
const [containerName, containerData] = Object.entries(container.properties)[0];
68-
const isActivated = isObjectInDeltaModelActivated(containerData);
69-
return getDeleteContainerScriptDto(containerName, isActivated);
70-
});
71-
72-
const modifyContainersScriptDtos = []
73-
.concat(modifiedContainers)
74-
.filter(Boolean)
65+
const deleteContainersScriptDtos = deletedContainers.map(container => {
66+
const [containerName, containerData] = Object.entries(container.properties)[0];
67+
const isActivated = isObjectInDeltaModelActivated(containerData);
68+
return getDeleteContainerScriptDto(containerName, isActivated);
69+
});
70+
71+
const modifyContainersScriptDtos = modifiedContainers
7572
.map(containerWrapper => Object.values(containerWrapper.properties)[0])
7673
.flatMap(container => getModifyContainerScriptDtos(container));
7774

@@ -149,20 +146,10 @@ const getAlterCollectionsScriptDtos = ({
149146
externalDefinitions,
150147
inlineDeltaRelationships,
151148
}) => {
152-
const createScriptsData = []
153-
.concat(collection.properties?.entities?.properties?.added?.items)
154-
.filter(Boolean)
155-
.map(item => Object.values(item.properties)[0]);
156-
157-
const deleteScriptsData = []
158-
.concat(collection.properties?.entities?.properties?.deleted?.items)
159-
.filter(Boolean)
160-
.map(item => Object.values(item.properties)[0]);
161-
162-
const modifyScriptsData = []
163-
.concat(collection.properties?.entities?.properties?.modified?.items)
164-
.filter(Boolean)
165-
.map(item => Object.values(item.properties)[0]);
149+
const entitiesData = collection.properties?.entities?.properties;
150+
const createScriptsData = getItemProperties(entitiesData?.added);
151+
const deleteScriptsData = getItemProperties(entitiesData?.deleted);
152+
const modifyScriptsData = getItemProperties(entitiesData?.modified);
166153

167154
const createCollectionsScriptDtos = sortCollectionsByRelationships(
168155
createScriptsData.filter(collection => collection.compMod?.created),
@@ -216,29 +203,30 @@ const getAlterCollectionsScriptDtos = ({
216203
* @return {AlterScriptDto[]}
217204
* */
218205
const getAlterViewScriptDtos = (collection, app) => {
219-
const createViewsScriptDtos = []
220-
.concat(collection.properties?.views?.properties?.added?.items)
221-
.filter(Boolean)
222-
.map(item => Object.values(item.properties)[0])
223-
.map(view => ({ ...view, ...(view.role || {}) }))
206+
const viewsData = collection.properties?.views?.properties;
207+
const modifyScriptsData = getItemProperties(viewsData?.modified);
208+
209+
const createViewsScriptDtos = getItemProperties(viewsData?.added)
210+
.map(view => ({ ...view, ..._.omit(view.role, 'properties') }))
224211
.filter(view => view.compMod?.created)
225212
.map(getAddViewScriptDto(app));
226213

227-
const deleteViewsScriptDtos = []
228-
.concat(collection.properties?.views?.properties?.deleted?.items)
229-
.filter(Boolean)
230-
.map(item => Object.values(item.properties)[0])
231-
.map(view => ({ ...view, ...(view.role || {}) }))
214+
const deleteViewsScriptDtos = getItemProperties(viewsData?.deleted)
215+
.map(view => ({ ...view, ..._.omit(view.role, 'properties') }))
232216
.map(getDeleteViewScriptDto(app));
233217

234-
const modifyViewsScriptDtos = []
235-
.concat(collection.properties?.views?.properties?.modified?.items)
236-
.filter(Boolean)
237-
.map(viewWrapper => Object.values(viewWrapper.properties)[0])
238-
.map(view => ({ ...view, ...(view.role || {}) }))
239-
.flatMap(view => getModifyViewScriptDtos(view));
218+
const modifyViewsScriptDtos = modifyScriptsData
219+
.map(view => ({ ...view, ..._.omit(view.role, 'properties') }))
220+
.flatMap(getModifyViewScriptDtos);
221+
222+
const modifyCommentScriptDtos = modifyScriptsData.flatMap(getModifiedCommentOnColumnScriptDtos);
240223

241-
return [...deleteViewsScriptDtos, ...createViewsScriptDtos, ...modifyViewsScriptDtos].filter(Boolean);
224+
return [
225+
...deleteViewsScriptDtos,
226+
...createViewsScriptDtos,
227+
...modifyViewsScriptDtos,
228+
...modifyCommentScriptDtos,
229+
].filter(Boolean);
242230
};
243231

244232
/**
@@ -260,28 +248,20 @@ const getAlterModelDefinitionsScriptDtos = ({
260248
internalDefinitions,
261249
externalDefinitions,
262250
}) => {
263-
const createUdtScriptDtos = []
264-
.concat(collection.properties?.modelDefinitions?.properties?.added?.items)
265-
.filter(Boolean)
266-
.map(item => Object.values(item.properties)[0])
267-
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
251+
const definitionsData = collection.properties?.modelDefinitions?.properties;
252+
const createUdtScriptDtos = getItemProperties(definitionsData?.added)
253+
.map(item => ({ ...item, ..._.omit(item.role, 'properties') }))
268254
.filter(item => item.compMod?.created)
269255
.map(getCreateUdtScriptDto({ app, dbVersion, modelDefinitions, internalDefinitions, externalDefinitions }));
270256

271-
const deleteUdtScriptDtos = []
272-
.concat(collection.properties?.modelDefinitions?.properties?.deleted?.items)
273-
.filter(Boolean)
274-
.map(item => Object.values(item.properties)[0])
275-
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
257+
const deleteUdtScriptDtos = getItemProperties(definitionsData?.deleted)
258+
.map(item => ({ ...item, ..._.omit(item.role, 'properties') }))
276259
.filter(collection => collection.compMod?.deleted)
277260
.map(getDeleteUdtScriptDto(app));
278261

279-
const addColumnScriptDtos = []
280-
.concat(collection.properties?.modelDefinitions?.properties?.added?.items)
281-
.filter(Boolean)
282-
.map(item => Object.values(item.properties)[0])
262+
const addColumnScriptDtos = getItemProperties(definitionsData?.added)
283263
.filter(item => !item.compMod)
284-
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
264+
.map(item => ({ ...item, ..._.omit(item.role, 'properties') }))
285265
.filter(item => item.childType === 'composite')
286266
.flatMap(
287267
getAddColumnToTypeScriptDtos({
@@ -293,21 +273,15 @@ const getAlterModelDefinitionsScriptDtos = ({
293273
}),
294274
);
295275

296-
const deleteColumnScriptDtos = []
297-
.concat(collection.properties?.modelDefinitions?.properties?.deleted?.items)
298-
.filter(Boolean)
299-
.map(item => Object.values(item.properties)[0])
276+
const deleteColumnScriptDtos = getItemProperties(definitionsData?.deleted)
300277
.filter(item => !item.compMod)
301-
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
278+
.map(item => ({ ...item, ..._.omit(item.role, 'properties') }))
302279
.filter(item => item.childType === 'composite')
303280
.flatMap(getDeleteColumnFromTypeScriptDtos(app));
304281

305-
const modifyColumnScriptDtos = []
306-
.concat(collection.properties?.modelDefinitions?.properties?.modified?.items)
307-
.filter(Boolean)
308-
.map(item => Object.values(item.properties)[0])
282+
const modifyColumnScriptDtos = getItemProperties(definitionsData?.modified)
309283
.filter(item => !item.compMod)
310-
.map(item => ({ ...item, ...(_.omit(item.role, 'properties') || {}) }))
284+
.map(item => ({ ...item, ..._.omit(item.role, 'properties') }))
311285
.filter(item => item.childType === 'composite')
312286
.flatMap(getModifyColumnOfTypeScriptDtos(app));
313287

@@ -325,33 +299,20 @@ const getAlterModelDefinitionsScriptDtos = ({
325299
* */
326300
const getAlterRelationshipsScriptDtos = ({ collection, app, ignoreRelationshipIDs = [] }) => {
327301
const ddlProvider = require('../ddlProvider/ddlProvider')(null, null, app);
302+
const relationshipData = collection.properties?.relationships?.properties;
328303

329-
const addedRelationships = []
330-
.concat(collection.properties?.relationships?.properties?.added?.items)
331-
.filter(Boolean)
332-
.map(item => Object.values(item.properties)[0])
333-
.filter(
334-
relationship =>
335-
relationship?.role?.compMod?.created && !ignoreRelationshipIDs.includes(relationship?.role?.id),
336-
);
304+
const addedRelationships = getItemProperties(relationshipData?.added).filter(
305+
relationship => relationship?.role?.compMod?.created && !ignoreRelationshipIDs.includes(relationship?.role?.id),
306+
);
337307

338-
const deletedRelationships = []
339-
.concat(collection.properties?.relationships?.properties?.deleted?.items)
340-
.filter(Boolean)
341-
.map(item => Object.values(item.properties)[0])
342-
.filter(
343-
relationship =>
344-
relationship?.role?.compMod?.deleted && !ignoreRelationshipIDs.includes(relationship?.role?.id),
345-
);
308+
const deletedRelationships = getItemProperties(relationshipData?.deleted).filter(
309+
relationship => relationship?.role?.compMod?.deleted && !ignoreRelationshipIDs.includes(relationship?.role?.id),
310+
);
346311

347-
const modifiedRelationships = []
348-
.concat(collection.properties?.relationships?.properties?.modified?.items)
349-
.filter(Boolean)
350-
.map(item => Object.values(item.properties)[0])
351-
.filter(
352-
relationship =>
353-
relationship?.role?.compMod?.modified && !ignoreRelationshipIDs.includes(relationship?.role?.id),
354-
);
312+
const modifiedRelationships = getItemProperties(relationshipData?.modified).filter(
313+
relationship =>
314+
relationship?.role?.compMod?.modified && !ignoreRelationshipIDs.includes(relationship?.role?.id),
315+
);
355316

356317
const deleteFkScriptDtos = getDeleteForeignKeyScriptDtos(ddlProvider)(deletedRelationships);
357318
const addFkScriptDtos = getAddForeignKeyScriptDtos(ddlProvider)(addedRelationships);
@@ -394,27 +355,22 @@ const prettifyAlterScriptDto = dto => {
394355
* @return {AlterScriptDto[]}
395356
* */
396357
const getAlterContainersSequencesScriptDtos = ({ collection, app }) => {
397-
const addedContainers = collection.properties?.containers?.properties?.added?.items;
398-
const deletedContainers = collection.properties?.containers?.properties?.deleted?.items;
399-
const modifiedContainers = collection.properties?.containers?.properties?.modified?.items;
358+
const containersData = collection.properties?.containers?.properties;
359+
const addedContainers = getItemProperties(containersData?.added);
360+
const deletedContainers = getItemProperties(containersData?.deleted);
361+
const modifiedContainers = getItemProperties(containersData?.modified);
400362

401-
const addContainersSequencesScriptDtos = []
402-
.concat(addedContainers)
403-
.filter(Boolean)
404-
.map(container => Object.values(container.properties)[0])
405-
.flatMap(container => getAddContainerSequencesScriptDtos({ container }));
363+
const addContainersSequencesScriptDtos = addedContainers.flatMap(container =>
364+
getAddContainerSequencesScriptDtos({ container }),
365+
);
406366

407-
const deleteContainersScriptDtos = []
408-
.concat(deletedContainers)
409-
.filter(Boolean)
410-
.map(container => Object.values(container.properties)[0])
411-
.flatMap(container => getDeleteContainerSequencesScriptDtos({ container }));
367+
const deleteContainersScriptDtos = deletedContainers.flatMap(container =>
368+
getDeleteContainerSequencesScriptDtos({ container }),
369+
);
412370

413-
const modifyContainersScriptDtos = []
414-
.concat(modifiedContainers)
415-
.filter(Boolean)
416-
.map(container => Object.values(container.properties)[0])
417-
.flatMap(container => getModifyContainerSequencesScriptDtos({ container }));
371+
const modifyContainersScriptDtos = modifiedContainers.flatMap(container =>
372+
getModifyContainerSequencesScriptDtos({ container }),
373+
);
418374

419375
return [...addContainersSequencesScriptDtos, ...deleteContainersScriptDtos, ...modifyContainersScriptDtos].filter(
420376
Boolean,
@@ -426,13 +382,11 @@ const getInlineRelationships = ({ collection, options }) => {
426382
return [];
427383
}
428384

429-
const addedCollectionIDs = []
430-
.concat(collection.properties?.entities?.properties?.added?.items)
385+
const addedCollectionIDs = getItems(collection.properties?.entities?.properties?.added)
431386
.filter(item => item && Object.values(item.properties)?.[0]?.compMod?.created)
432387
.map(item => Object.values(item.properties)[0].role.id);
433388

434-
const addedRelationships = []
435-
.concat(collection.properties?.relationships?.properties?.added?.items)
389+
const addedRelationships = getItems(collection.properties?.relationships?.properties?.added)
436390
.map(item => item && Object.values(item.properties)[0])
437391
.filter(r => r?.role?.compMod?.created && addedCollectionIDs.includes(r?.role?.childCollection));
438392

forward_engineering/alterScript/alterScriptHelpers/columnHelpers/commentsHelper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const getUpdatedCommentOnColumnScriptDtos = collection => {
3232
return _.toPairs(collection.properties)
3333
.filter(([name, jsonSchema]) => {
3434
const newComment = jsonSchema.description;
35-
const oldName = jsonSchema.compMod.oldField.name;
35+
const oldName = jsonSchema.compMod?.oldField?.name || name;
3636
const oldComment = collection.role.properties[oldName]?.description;
3737
return newComment && (!oldComment || newComment !== oldComment);
3838
})
@@ -68,7 +68,7 @@ const getDeletedCommentOnColumnScriptDtos = collection => {
6868
return _.toPairs(collection.properties)
6969
.filter(([name, jsonSchema]) => {
7070
const newComment = jsonSchema.description;
71-
const oldName = jsonSchema.compMod.oldField.name;
71+
const oldName = jsonSchema.compMod?.oldField?.name || name;
7272
const oldComment = collection.role.properties[oldName]?.description;
7373
return oldComment && !newComment;
7474
})

forward_engineering/utils/general.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const getDbName = containerData => {
1818
};
1919

2020
const getEntityName = entityData => {
21-
return (entityData && (entityData.code || entityData.collectionName)) || '';
21+
return (entityData && (entityData.code || entityData.collectionName || entityData.name)) || '';
2222
};
2323

2424
const getViewName = view => {

0 commit comments

Comments
 (0)