From 10dabd355e5f74942a6e91c5ff948d26a3e01e0b Mon Sep 17 00:00:00 2001 From: Alik Rakhmonov Date: Fri, 6 Feb 2026 12:42:21 +0100 Subject: [PATCH 1/3] HCK-14622: fix renaming --- .../alterScript/alterScriptFromDeltaHelper.js | 39 +++++++------------ .../alterScriptHelpers/alterEntityHelper.js | 21 +++++----- .../columnHelpers/optionsHelper.js | 2 +- .../columnHelpers/typeHelper.js | 6 +-- forward_engineering/configs/templates.js | 2 +- forward_engineering/ddlProvider.js | 3 +- forward_engineering/helpers/utils.js | 10 +++++ 7 files changed, 40 insertions(+), 43 deletions(-) diff --git a/forward_engineering/alterScript/alterScriptFromDeltaHelper.js b/forward_engineering/alterScript/alterScriptFromDeltaHelper.js index cb49d30..521f77b 100644 --- a/forward_engineering/alterScript/alterScriptFromDeltaHelper.js +++ b/forward_engineering/alterScript/alterScriptFromDeltaHelper.js @@ -109,32 +109,19 @@ const getAlterRelationshipsScript = ({ collection, app, modelData, ignoreRelatio modelData, }); - const addedRelationships = [] - .concat(collection.properties?.relationships?.properties?.added?.items) - .filter(Boolean) - .map(item => Object.values(item.properties)[0]) - .filter( - relationship => - relationship?.role?.compMod?.created && !ignoreRelationshipIDs.includes(relationship?.role?.id), - ); - - const deletedRelationships = [] - .concat(collection.properties?.relationships?.properties?.deleted?.items) - .filter(Boolean) - .map(item => Object.values(item.properties)[0]) - .filter( - relationship => - relationship?.role?.compMod?.deleted && !ignoreRelationshipIDs.includes(relationship?.role?.id), - ); - - const modifiedRelationships = [] - .concat(collection.properties?.relationships?.properties?.modified?.items) - .filter(Boolean) - .map(item => Object.values(item.properties)[0]) - .filter( - relationship => - relationship?.role?.compMod?.modified && !ignoreRelationshipIDs.includes(relationship?.role?.id), - ); + const relationshipData = collection.properties?.relationships?.properties; + const addedRelationships = getItemProperties(relationshipData.added).filter( + relationship => relationship?.role?.compMod?.created && !ignoreRelationshipIDs.includes(relationship?.role?.id), + ); + + const deletedRelationships = getItemProperties(relationshipData.deleted).filter( + relationship => relationship?.role?.compMod?.deleted && !ignoreRelationshipIDs.includes(relationship?.role?.id), + ); + + const modifiedRelationships = getItemProperties(relationshipData.modified).filter( + relationship => + relationship?.role?.compMod?.modified && !ignoreRelationshipIDs.includes(relationship?.role?.id), + ); const deleteFkScriptDtos = getDeleteForeignKeyScripts(deletedRelationships); const addFkScriptDtos = getAddForeignKeyScripts(addedRelationships); diff --git a/forward_engineering/alterScript/alterScriptHelpers/alterEntityHelper.js b/forward_engineering/alterScript/alterScriptHelpers/alterEntityHelper.js index 6d7ea0b..5519deb 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/alterEntityHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/alterEntityHelper.js @@ -1,4 +1,4 @@ -const { getFullName } = require('../../helpers/utils'); +const { getFullName, getName } = require('../../helpers/utils'); const { getModifiedDefaultColumnValueScripts } = require('./columnHelpers/defaultConstraintHelper'); const { getModifyColumnNameScript } = require('./columnHelpers/nameHelper'); const { getModifiedColumnNotNullScripts } = require('./columnHelpers/notNullHelper'); @@ -10,7 +10,6 @@ const { getCompMod, checkCompModEqual, setEntityKeys } = require('./common'); module.exports = (app, options) => { const _ = app.require('lodash'); - const { getEntityName } = app.require('@hackolade/ddl-fe-utils').general; const { createColumnDefinitionBySchema } = require('./createColumnDefinition')(_); const ddlProvider = require('../../ddlProvider')(null, options, app); const { generateIdToNameHashTable, generateIdToActivatedHashTable } = app.require('@hackolade/ddl-fe-utils'); @@ -20,12 +19,12 @@ module.exports = (app, options) => { const dbData = { databaseName, projectId: _.first(modelData)?.projectId }; const table = { ..._.omit(collection, 'timeUnitpartitionKey', 'clusteringKey', 'rangePartitionKey'), - ...(collection?.role || {}), + ...collection?.role, }; const idToNameHashTable = generateIdToNameHashTable(table); const idToActivatedHashTable = generateIdToActivatedHashTable(table); const jsonSchema = setEntityKeys({ idToActivatedHashTable, idToNameHashTable, entity: table }); - const tableName = getEntityName(jsonSchema); + const tableName = getName(jsonSchema); const columnDefinitions = _.toPairs(jsonSchema.properties).map(([name, column]) => createColumnDefinitionBySchema({ jsonSchema: column, @@ -54,8 +53,8 @@ module.exports = (app, options) => { }; const getDeleteCollectionScript = modelData => collection => { - const jsonSchema = { ...collection, ...(collection?.role || {}) }; - const tableName = getEntityName(jsonSchema); + const jsonSchema = { ...collection, ...collection?.role }; + const tableName = getName(jsonSchema); const databaseName = collection.compMod.keyspaceName; const projectId = _.first(modelData)?.projectId; @@ -65,7 +64,7 @@ module.exports = (app, options) => { const getModifyCollectionScript = modelData => collection => { const table = { ..._.omit(collection, 'timeUnitpartitionKey', 'clusteringKey', 'rangePartitionKey'), - ...(collection?.role || {}), + ...collection?.role, }; const databaseName = table.compMod.keyspaceName; @@ -73,7 +72,7 @@ module.exports = (app, options) => { const idToNameHashTable = generateIdToNameHashTable(table); const idToActivatedHashTable = generateIdToActivatedHashTable(table); const jsonSchema = setEntityKeys({ idToActivatedHashTable, idToNameHashTable, entity: table }); - const tableName = getEntityName(jsonSchema); + const tableName = getName(jsonSchema); const fullTableName = getFullName(dbData.projectId, dbData.databaseName, collection.role?.name || tableName); const tableData = { @@ -131,8 +130,8 @@ module.exports = (app, options) => { }; const getAddColumnScript = modelData => collection => { - const collectionSchema = { ...collection, ...(_.omit(collection?.role, 'properties') || {}) }; - const tableName = collectionSchema?.code || collectionSchema?.collectionName || collectionSchema?.name; + const collectionSchema = { ...collection, ..._.omit(collection?.role, 'properties') }; + const tableName = getName(collectionSchema); const databaseName = collectionSchema.compMod?.keyspaceName; const dbData = { databaseName, projectId: _.first(modelData)?.projectId }; @@ -153,7 +152,7 @@ module.exports = (app, options) => { const getDeleteColumnScript = modelData => collection => { const collectionSchema = { ...collection, ..._.omit(collection?.role, 'properties') }; - const tableName = collectionSchema?.code || collectionSchema?.collectionName || collectionSchema?.name; + const tableName = getName(collectionSchema); const databaseName = collectionSchema.compMod?.keyspaceName; const dbData = { databaseName, projectId: _.first(modelData)?.projectId }; diff --git a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/optionsHelper.js b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/optionsHelper.js index 3a37f23..1178e21 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/optionsHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/optionsHelper.js @@ -31,7 +31,7 @@ const getModifiedColumnOptionScripts = ({ collection, app, tableData }) => { return assignTemplates(templates.alterColumnOptions, { tableName: tableData.name, - columnName: wrapByBackticks(oldName), + columnName: wrapByBackticks(name), options: tab(optionsToUpdate.join(',\n')), }); }) diff --git a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js index 38bdda6..7ab2e75 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js @@ -93,13 +93,13 @@ const setTypeChangeAction = (oldField, newField, changeState) => { return; } - const newPrecision = newField.precision ?? 0; - const oldPrecision = oldField.precision ?? 0; + const newPrecision = newField.precision; + const oldPrecision = oldField.precision; const newScale = newField.scale ?? 0; const oldScale = oldField.scale ?? 0; - const isPrecisionChanged = newPrecision > oldPrecision; + const isPrecisionChanged = _.isFinite(newPrecision) && _.isFinite(oldPrecision) && newPrecision > oldPrecision; if (isPrecisionChanged && newScale >= oldScale) { changeState.action = TYPE_CHANGE.update; diff --git a/forward_engineering/configs/templates.js b/forward_engineering/configs/templates.js index 4ba402e..46c4443 100644 --- a/forward_engineering/configs/templates.js +++ b/forward_engineering/configs/templates.js @@ -46,7 +46,7 @@ module.exports = { renameTable: 'ALTER TABLE IF EXISTS ${oldTableName} RENAME TO ${newTableName};', - alterPkConstraint: 'ALTER TABLE ${tableName}\nADD CONSTRAINT PRIMARY KEY (${columns}) NOT ENFORCED;', + alterPkConstraint: 'ALTER TABLE ${tableName}\nADD PRIMARY KEY (${columns}) NOT ENFORCED;', dropPk: 'ALTER TABLE ${tableName} DROP PRIMARY KEY IF EXISTS;', diff --git a/forward_engineering/ddlProvider.js b/forward_engineering/ddlProvider.js index 46045dd..3334a0f 100644 --- a/forward_engineering/ddlProvider.js +++ b/forward_engineering/ddlProvider.js @@ -13,6 +13,7 @@ const { prepareConstraintName, wrapByBackticks, getFullName, + getName, } = require('./helpers/utils'); module.exports = (baseProvider, options, app) => { @@ -341,7 +342,7 @@ module.exports = (baseProvider, options, app) => { return { ...tableData, - name: data.code || data.collectionName, + name: getName(jsonSchema) || getName(data), friendlyName: jsonSchema.title && jsonSchema.title !== data.collectionName ? jsonSchema.title : '', description: data.description, orReplace: data.orReplace, diff --git a/forward_engineering/helpers/utils.js b/forward_engineering/helpers/utils.js index 123754c..e0464e5 100644 --- a/forward_engineering/helpers/utils.js +++ b/forward_engineering/helpers/utils.js @@ -378,6 +378,15 @@ const getFullName = (...names) => { return wrapByBackticks(fullName); }; +const getName = entity => + entity.compMod?.code?.new || + entity.code || + entity.compMod?.collectionName?.new || + entity.collectionName || + entity.compMod?.name?.new || + entity.name || + ''; + module.exports = { isActivatedPartition, getTablePartitioning, @@ -393,4 +402,5 @@ module.exports = { decorateType, getFullName, addParameters, + getName, }; From 526dd838c81f27521c19c01e8b22401097698a38 Mon Sep 17 00:00:00 2001 From: Alik Rakhmonov Date: Fri, 6 Feb 2026 12:50:31 +0100 Subject: [PATCH 2/3] fixes --- .../alterScriptHelpers/columnHelpers/typeHelper.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js index 7ab2e75..9b1cce0 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/columnHelpers/typeHelper.js @@ -96,16 +96,16 @@ const setTypeChangeAction = (oldField, newField, changeState) => { const newPrecision = newField.precision; const oldPrecision = oldField.precision; - const newScale = newField.scale ?? 0; - const oldScale = oldField.scale ?? 0; + const newScale = newField.scale; + const oldScale = oldField.scale; const isPrecisionChanged = _.isFinite(newPrecision) && _.isFinite(oldPrecision) && newPrecision > oldPrecision; - if (isPrecisionChanged && newScale >= oldScale) { + if (isPrecisionChanged && (newScale === oldScale || newScale > oldScale)) { changeState.action = TYPE_CHANGE.update; return; } - const isScaleChanged = newScale > oldScale; + const isScaleChanged = _.isFinite(newScale) && _.isFinite(oldScale) && newScale > oldScale; if (isScaleChanged && newPrecision >= oldPrecision) { changeState.action = TYPE_CHANGE.update; From 5a46187d675069cac1f7bca16012227ec1f5f2c5 Mon Sep 17 00:00:00 2001 From: Alik Rakhmonov Date: Fri, 6 Feb 2026 13:08:37 +0100 Subject: [PATCH 3/3] order --- forward_engineering/alterScript/alterScriptBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forward_engineering/alterScript/alterScriptBuilder.js b/forward_engineering/alterScript/alterScriptBuilder.js index 5290b1d..cc7439d 100644 --- a/forward_engineering/alterScript/alterScriptBuilder.js +++ b/forward_engineering/alterScript/alterScriptBuilder.js @@ -26,7 +26,7 @@ const generateAlterScript = (data, callback, app) => { modelData: data.modelData, ignoreRelationshipIDs, }); - const script = [...containersScripts, ...collectionsScripts, ...viewScripts, ...relationships] + const script = [...containersScripts, ...collectionsScripts, ...relationships, ...viewScripts] .filter(Boolean) .join('\n\n');