From 58e9fe165e67844889dcc9bfe945eb461fb4de7f Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 17:09:28 +0300 Subject: [PATCH 1/4] HCK-12339: fix getting modified constraints during transit --- .../entityHelpers/primaryKeyHelper.js | 38 ++++++++--------- .../entityHelpers/uniqueKeyHelper.js | 38 ++++++++--------- .../alterScript/types/AlterKeyDto.js | 42 ++++++++++++++++--- 3 files changed, 74 insertions(+), 44 deletions(-) diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js index 08a0f957..bf1ccc9d 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js @@ -7,7 +7,7 @@ const { AlterCollectionColumnKeyOptionDto, AlterCollectionRoleCompModPrimaryKey, } = require('../../types/AlterCollectionDto'); -const { KeyTransitionDto, KeyScriptModificationDto } = require('../../types/AlterKeyDto'); +const { PrimaryKeyTransitionDto, KeyScriptModificationDto } = require('../../types/AlterKeyDto'); const { getFullCollectionName, getSchemaOfAlterCollection, @@ -62,7 +62,7 @@ const getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions = compos /** * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {PrimaryKeyTransitionDto} * */ const wasCompositePkChangedInTransitionFromCompositeToRegular = collection => { /** @@ -77,18 +77,18 @@ const wasCompositePkChangedInTransitionFromCompositeToRegular = collection => { if (idsOfColumns.length !== amountOfColumnsInRegularPk) { // We return false, because it wouldn't count as transition between regular PK and composite PK // if composite PK did not constraint exactly 1 column - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const idOfPkColumn = idsOfColumns[0]; const newColumnJsonSchema = Object.values(collection.properties).find( columnJsonSchema => columnJsonSchema.GUID === idOfPkColumn, ); if (!newColumnJsonSchema) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const isNewColumnARegularPrimaryKey = newColumnJsonSchema?.primaryKey && !newColumnJsonSchema?.compositePrimaryKey; if (!isNewColumnARegularPrimaryKey) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const constraintOptions = getCustomPropertiesOfRegularPkForComparisonWithRegularPkOptions(newColumnJsonSchema); const areOptionsEqual = oldPrimaryKeys.some(compositePk => { @@ -100,12 +100,12 @@ const wasCompositePkChangedInTransitionFromCompositeToRegular = collection => { return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return PrimaryKeyTransitionDto.transition(!areOptionsEqual); }; /** * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {PrimaryKeyTransitionDto} * */ const wasCompositePkChangedInTransitionFromRegularToComposite = collection => { /** @@ -120,18 +120,18 @@ const wasCompositePkChangedInTransitionFromRegularToComposite = collection => { if (idsOfColumns.length !== amountOfColumnsInRegularPk) { // We return false, because it wouldn't count as transition between regular PK and composite PK // if composite PK does not constraint exactly 1 column - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const idOfPkColumn = idsOfColumns[0]; const oldColumnJsonSchema = Object.values(collection.role.properties).find( columnJsonSchema => columnJsonSchema.GUID === idOfPkColumn, ); if (!oldColumnJsonSchema) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const isOldColumnARegularPrimaryKey = oldColumnJsonSchema?.primaryKey && !oldColumnJsonSchema?.compositePrimaryKey; if (!isOldColumnARegularPrimaryKey) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } const constraintOptions = getCustomPropertiesOfRegularPkForComparisonWithRegularPkOptions(oldColumnJsonSchema); const areOptionsEqual = newPrimaryKeys.some(compositePk => { @@ -143,7 +143,7 @@ const wasCompositePkChangedInTransitionFromRegularToComposite = collection => { return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return PrimaryKeyTransitionDto.transition(!areOptionsEqual); }; /** @@ -410,7 +410,7 @@ const wasFieldChangedToBeARegularPk = (columnJsonSchema, collection) => { /** * @param {AlterCollectionColumnDto} columnJsonSchema * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {PrimaryKeyTransitionDto} * */ const wasRegularPkChangedInTransitionFromCompositeToRegular = (columnJsonSchema, collection) => { const oldName = columnJsonSchema.compMod.oldField.name; @@ -420,7 +420,7 @@ const wasRegularPkChangedInTransitionFromCompositeToRegular = (columnJsonSchema, const wasTheFieldAnyPrimaryKey = Boolean(oldColumnJsonSchema?.primaryKey); if (!(isRegularPrimaryKey && wasTheFieldAnyPrimaryKey)) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } /** @@ -454,16 +454,16 @@ const wasRegularPkChangedInTransitionFromCompositeToRegular = (columnJsonSchema, getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(oldCompositePk); return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return PrimaryKeyTransitionDto.transition(!areOptionsEqual); } - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); }; /** * @param {AlterCollectionColumnDto} columnJsonSchema * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {PrimaryKeyTransitionDto} * */ const wasRegularPkChangedInTransitionFromRegularToComposite = (columnJsonSchema, collection) => { const oldName = columnJsonSchema.compMod.oldField.name; @@ -473,7 +473,7 @@ const wasRegularPkChangedInTransitionFromRegularToComposite = (columnJsonSchema, const isTheFieldAnyPrimaryKey = Boolean(columnJsonSchema?.primaryKey); if (!(wasRegularPrimaryKey && isTheFieldAnyPrimaryKey)) { - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); } /** @@ -507,10 +507,10 @@ const wasRegularPkChangedInTransitionFromRegularToComposite = (columnJsonSchema, getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(oldCompositePk); return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return PrimaryKeyTransitionDto.transition(!areOptionsEqual); } - return KeyTransitionDto.noTransition(); + return PrimaryKeyTransitionDto.noTransition(); }; /** diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js index 64434d93..a23caacd 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js @@ -7,7 +7,7 @@ const { AlterCollectionColumnKeyOptionDto, AlterCollectionRoleCompModUniqueKey, } = require('../../types/AlterCollectionDto'); -const { KeyTransitionDto, KeyScriptModificationDto } = require('../../types/AlterKeyDto'); +const { UniqueKeyTransitionDto, KeyScriptModificationDto } = require('../../types/AlterKeyDto'); const { dropKeyConstraint, alterKeyConstraint } = require('../../../ddlProvider/ddlHelpers/constraintsHelper'); const keyHelper = require('../../../ddlProvider/ddlHelpers/keyHelper'); const { @@ -64,7 +64,7 @@ const getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOp /** * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {UniqueKeyTransitionDto} * */ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collection => { /** @@ -79,18 +79,18 @@ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collectio if (idsOfColumns.length !== amountOfColumnsInRegularUniqueKey) { // We return false, because it wouldn't count as transition between regular UniqueKey and composite UniqueKey // if composite UniqueKey did not constraint exactly 1 column - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const idOfUniqueKeyColumn = idsOfColumns[0]; const newColumnJsonSchema = Object.values(collection.properties).find( columnJsonSchema => columnJsonSchema.GUID === idOfUniqueKeyColumn, ); if (!newColumnJsonSchema) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const isNewColumnARegularUniqueKey = newColumnJsonSchema?.unique && !newColumnJsonSchema?.compositeUniqueKey; if (!isNewColumnARegularUniqueKey) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const constraintOptions = getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions(newColumnJsonSchema); @@ -103,12 +103,12 @@ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collectio return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return UniqueKeyTransitionDto.transition(!areOptionsEqual); }; /** * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {UniqueKeyTransitionDto} * */ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collection => { /** @@ -123,18 +123,18 @@ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collectio if (idsOfColumns.length !== amountOfColumnsInRegularUniqueKey) { // We return false, because it wouldn't count as transition between regular UniqueKey and composite UniqueKey // if composite UniqueKey does not constraint exactly 1 column - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const idOfUniqueKeyColumn = idsOfColumns[0]; const oldColumnJsonSchema = Object.values(collection.role.properties).find( columnJsonSchema => columnJsonSchema.GUID === idOfUniqueKeyColumn, ); if (!oldColumnJsonSchema) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const isOldColumnARegularUniqueKey = oldColumnJsonSchema?.unique && !oldColumnJsonSchema?.compositeUniqueKey; if (!isOldColumnARegularUniqueKey) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } const constraintOptions = getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions(oldColumnJsonSchema); @@ -147,7 +147,7 @@ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collectio return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return UniqueKeyTransitionDto.transition(!areOptionsEqual); }; /** @@ -441,7 +441,7 @@ const wasFieldChangedToBeARegularUniqueKey = (columnJsonSchema, collection) => { /** * @param {AlterCollectionColumnDto} columnJsonSchema * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {UniqueKeyTransitionDto} * */ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJsonSchema, collection) => { const oldName = columnJsonSchema.compMod.oldField.name; @@ -451,7 +451,7 @@ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJson const wasTheFieldAnyUniqueKey = oldColumnJsonSchema?.unique || oldColumnJsonSchema.compositeUniqueKey; if (!(isRegularUniqueKey && wasTheFieldAnyUniqueKey)) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } /** @@ -488,16 +488,16 @@ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJson .differenceWith(constraintOptions, _.isEqual) .isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return UniqueKeyTransitionDto.transition(!areOptionsEqual); } - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); }; /** * @param {AlterCollectionColumnDto} columnJsonSchema * @param {AlterCollectionDto} collection - * @return {KeyTransitionDto} + * @return {UniqueKeyTransitionDto} * */ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJsonSchema, collection) => { const oldName = columnJsonSchema.compMod.oldField.name; @@ -507,7 +507,7 @@ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJson const isTheFieldAnyUniqueKey = Boolean(columnJsonSchema?.unique); if (!(wasRegularUniqueKey && isTheFieldAnyUniqueKey)) { - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); } /** @@ -544,10 +544,10 @@ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJson .differenceWith(constraintOptions, _.isEqual) .isEmpty(); }); - return KeyTransitionDto.transition(!areOptionsEqual); + return UniqueKeyTransitionDto.transition(!areOptionsEqual); } - return KeyTransitionDto.noTransition(); + return UniqueKeyTransitionDto.noTransition(); }; /** diff --git a/forward_engineering/alterScript/types/AlterKeyDto.js b/forward_engineering/alterScript/types/AlterKeyDto.js index 8cef5988..56e04212 100644 --- a/forward_engineering/alterScript/types/AlterKeyDto.js +++ b/forward_engineering/alterScript/types/AlterKeyDto.js @@ -5,22 +5,33 @@ class KeyTransitionDto { didTransitionHappen; /** - * @type {boolean | undefined} + * @return {KeyTransitionDto} * */ - wasPkChangedInTransition; + static noTransition() { + return { + didTransitionHappen: false, + }; + } /** * @return {KeyTransitionDto} * */ - static noTransition() { + static transition() { return { - didTransitionHappen: false, + didTransitionHappen: true, }; } +} + +class PrimaryKeyTransitionDto extends KeyTransitionDto { + /** + * @type {boolean | undefined} + * */ + wasPkChangedInTransition; /** * @param {boolean} wasPkChangedInTransition - * @return {KeyTransitionDto} + * @return {PrimaryKeyTransitionDto} * */ static transition(wasPkChangedInTransition) { return { @@ -30,6 +41,24 @@ class KeyTransitionDto { } } +class UniqueKeyTransitionDto extends KeyTransitionDto { + /** + * @type {boolean | undefined} + * */ + wasUniqueKeyChangedInTransition; + + /** + * @param {boolean} wasUniqueKeyChangedInTransition + * @return {UniqueKeyTransitionDto} + * */ + static transition(wasUniqueKeyChangedInTransition) { + return { + didTransitionHappen: true, + wasUniqueKeyChangedInTransition, + }; + } +} + class KeyScriptModificationDto { /** * @type {string} @@ -67,5 +96,6 @@ class KeyScriptModificationDto { module.exports = { KeyScriptModificationDto, - KeyTransitionDto, + PrimaryKeyTransitionDto, + UniqueKeyTransitionDto, }; From ba2bec02575a2bb0db5a432f38f52eeb5019bbb4 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 17:21:46 +0300 Subject: [PATCH 2/4] HCK-12339: fix getting modified constraint options for regular PK/UK --- .../entityHelpers/areConstraintOptionsEqual.js | 18 ++++++++++++++++++ .../entityHelpers/primaryKeyHelper.js | 17 +++++++++++------ .../entityHelpers/uniqueKeyHelper.js | 11 +++++++---- 3 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 forward_engineering/alterScript/alterScriptHelpers/entityHelpers/areConstraintOptionsEqual.js diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/areConstraintOptionsEqual.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/areConstraintOptionsEqual.js new file mode 100644 index 00000000..ec140ae8 --- /dev/null +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/areConstraintOptionsEqual.js @@ -0,0 +1,18 @@ +const _ = require('lodash'); +const { AlterCollectionColumnKeyOptionDto } = require('../../types/AlterCollectionDto'); + +/** + * @param {Array>} oldConstraintOptions + * @param {Array>} constraintOptions + * @returns {boolean} + */ +const areConstraintOptionsEqual = (oldConstraintOptions = [], constraintOptions = []) => { + return ( + oldConstraintOptions.length === constraintOptions.length && + _(oldConstraintOptions).differenceWith(constraintOptions, _.isEqual).isEmpty() + ); +}; + +module.exports = { + areConstraintOptionsEqual, +}; diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js index bf1ccc9d..b81787d2 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/primaryKeyHelper.js @@ -15,6 +15,7 @@ const { wrapInQuotes, } = require('../../../utils/general'); const { alterKeyConstraint, dropKeyConstraint } = require('../../../ddlProvider/ddlHelpers/constraintsHelper'); +const { areConstraintOptionsEqual } = require('./areConstraintOptionsEqual'); const amountOfColumnsInRegularPk = 1; @@ -97,7 +98,8 @@ const wasCompositePkChangedInTransitionFromCompositeToRegular = collection => { } const oldCompositePkAsRegularPkOptions = getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(compositePk); - return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositePkAsRegularPkOptions, constraintOptions); }); return PrimaryKeyTransitionDto.transition(!areOptionsEqual); @@ -140,7 +142,8 @@ const wasCompositePkChangedInTransitionFromRegularToComposite = collection => { } const oldCompositePkAsRegularPkOptions = getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(compositePk); - return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositePkAsRegularPkOptions, constraintOptions); }); return PrimaryKeyTransitionDto.transition(!areOptionsEqual); @@ -452,7 +455,8 @@ const wasRegularPkChangedInTransitionFromCompositeToRegular = (columnJsonSchema, } const oldCompositePkAsRegularPkOptions = getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(oldCompositePk); - return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositePkAsRegularPkOptions, constraintOptions); }); return PrimaryKeyTransitionDto.transition(!areOptionsEqual); } @@ -505,7 +509,8 @@ const wasRegularPkChangedInTransitionFromRegularToComposite = (columnJsonSchema, } const oldCompositePkAsRegularPkOptions = getCustomPropertiesOfCompositePkForComparisonWithRegularPkOptions(oldCompositePk); - return _(oldCompositePkAsRegularPkOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositePkAsRegularPkOptions, constraintOptions); }); return PrimaryKeyTransitionDto.transition(!areOptionsEqual); } @@ -545,8 +550,8 @@ const wasRegularPkModified = (columnJsonSchema, collection) => { } const constraintOptions = getCustomPropertiesOfRegularPkForComparisonWithRegularPkOptions(columnJsonSchema); const oldConstraintOptions = getCustomPropertiesOfRegularPkForComparisonWithRegularPkOptions(oldJsonSchema); - const areOptionsEqual = _(oldConstraintOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); - return !areOptionsEqual; + + return !areConstraintOptionsEqual(oldConstraintOptions, constraintOptions); }; /** diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js index a23caacd..cface91a 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js @@ -17,6 +17,7 @@ const { getDbVersion, wrapInQuotes, } = require('../../../utils/general'); +const { areConstraintOptionsEqual } = require('./areConstraintOptionsEqual'); const amountOfColumnsInRegularUniqueKey = 1; @@ -100,7 +101,8 @@ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collectio } const oldCompositeUniqueKeyAsRegularUniqueKeyOptions = getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions(compositeUniqueKey); - return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositeUniqueKeyAsRegularUniqueKeyOptions, constraintOptions); }); return UniqueKeyTransitionDto.transition(!areOptionsEqual); @@ -144,7 +146,8 @@ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collectio } const oldCompositeUniqueKeyAsRegularUniqueKeyOptions = getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions(compositeUniqueKey); - return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); + + return areConstraintOptionsEqual(oldCompositeUniqueKeyAsRegularUniqueKeyOptions, constraintOptions); }); return UniqueKeyTransitionDto.transition(!areOptionsEqual); @@ -584,8 +587,8 @@ const wasRegularUniqueKeyModified = (columnJsonSchema, collection) => { getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions(columnJsonSchema); const oldConstraintOptions = getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions(oldJsonSchema); - const areOptionsEqual = _(oldConstraintOptions).differenceWith(constraintOptions, _.isEqual).isEmpty(); - return !areOptionsEqual; + + return !areConstraintOptionsEqual(oldConstraintOptions, constraintOptions); }; /** From dc9c9ed8cedf06de0960e0e52a9cfe93a80db403 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 17:33:11 +0300 Subject: [PATCH 3/4] HCK-12339: fix getting modified constraint options for regular PK/UK --- .../entityHelpers/uniqueKeyHelper.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js index cface91a..4b889e10 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js @@ -487,9 +487,8 @@ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJson } const oldCompositeUniqueKeyAsRegularUniqueKeyOptions = getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions(oldCompositeUniqueKey); - return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions) - .differenceWith(constraintOptions, _.isEqual) - .isEmpty(); + + return areConstraintOptionsEqual(oldCompositeUniqueKeyAsRegularUniqueKeyOptions, constraintOptions); }); return UniqueKeyTransitionDto.transition(!areOptionsEqual); } @@ -543,10 +542,10 @@ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJson } const oldCompositeUniqueKeyAsRegularUniqueKeyOptions = getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions(oldCompositeUniqueKey); - return _(oldCompositeUniqueKeyAsRegularUniqueKeyOptions) - .differenceWith(constraintOptions, _.isEqual) - .isEmpty(); + + return areConstraintOptionsEqual(oldCompositeUniqueKeyAsRegularUniqueKeyOptions, constraintOptions); }); + return UniqueKeyTransitionDto.transition(!areOptionsEqual); } From f3f5bf4d561e347618eea45905549c4cbf1ec3e3 Mon Sep 17 00:00:00 2001 From: Serhii Filonenko Date: Tue, 12 Aug 2025 17:35:13 +0300 Subject: [PATCH 4/4] HCK-12339: add missed UK options property --- .../alterScriptHelpers/entityHelpers/uniqueKeyHelper.js | 1 + 1 file changed, 1 insertion(+) diff --git a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js index 4b889e10..6ebb82d2 100644 --- a/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js +++ b/forward_engineering/alterScript/alterScriptHelpers/entityHelpers/uniqueKeyHelper.js @@ -39,6 +39,7 @@ const extractOptionsForComparisonWithRegularUniqueKeyOptions = optionHolder => { indexStorageParameters: optionHolder.indexStorageParameters, indexTablespace: optionHolder.indexTablespace, indexInclude: optionHolder.indexInclude, + nullsDistinct: optionHolder.nullsDistinct, }; };