77 AlterCollectionColumnKeyOptionDto,
88 AlterCollectionRoleCompModUniqueKey,
99} = require ( '../../types/AlterCollectionDto' ) ;
10- const { KeyTransitionDto , KeyScriptModificationDto } = require ( '../../types/AlterKeyDto' ) ;
10+ const { UniqueKeyTransitionDto , KeyScriptModificationDto } = require ( '../../types/AlterKeyDto' ) ;
1111const { dropKeyConstraint, alterKeyConstraint } = require ( '../../../ddlProvider/ddlHelpers/constraintsHelper' ) ;
1212const keyHelper = require ( '../../../ddlProvider/ddlHelpers/keyHelper' ) ;
1313const {
@@ -17,6 +17,7 @@ const {
1717 getDbVersion,
1818 wrapInQuotes,
1919} = require ( '../../../utils/general' ) ;
20+ const { areConstraintOptionsEqual } = require ( './areConstraintOptionsEqual' ) ;
2021
2122const amountOfColumnsInRegularUniqueKey = 1 ;
2223
@@ -38,6 +39,7 @@ const extractOptionsForComparisonWithRegularUniqueKeyOptions = optionHolder => {
3839 indexStorageParameters : optionHolder . indexStorageParameters ,
3940 indexTablespace : optionHolder . indexTablespace ,
4041 indexInclude : optionHolder . indexInclude ,
42+ nullsDistinct : optionHolder . nullsDistinct ,
4143 } ;
4244} ;
4345
@@ -64,7 +66,7 @@ const getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOp
6466
6567/**
6668 * @param {AlterCollectionDto } collection
67- * @return {KeyTransitionDto }
69+ * @return {UniqueKeyTransitionDto }
6870 * */
6971const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collection => {
7072 /**
@@ -79,18 +81,18 @@ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collectio
7981 if ( idsOfColumns . length !== amountOfColumnsInRegularUniqueKey ) {
8082 // We return false, because it wouldn't count as transition between regular UniqueKey and composite UniqueKey
8183 // if composite UniqueKey did not constraint exactly 1 column
82- return KeyTransitionDto . noTransition ( ) ;
84+ return UniqueKeyTransitionDto . noTransition ( ) ;
8385 }
8486 const idOfUniqueKeyColumn = idsOfColumns [ 0 ] ;
8587 const newColumnJsonSchema = Object . values ( collection . properties ) . find (
8688 columnJsonSchema => columnJsonSchema . GUID === idOfUniqueKeyColumn ,
8789 ) ;
8890 if ( ! newColumnJsonSchema ) {
89- return KeyTransitionDto . noTransition ( ) ;
91+ return UniqueKeyTransitionDto . noTransition ( ) ;
9092 }
9193 const isNewColumnARegularUniqueKey = newColumnJsonSchema ?. unique && ! newColumnJsonSchema ?. compositeUniqueKey ;
9294 if ( ! isNewColumnARegularUniqueKey ) {
93- return KeyTransitionDto . noTransition ( ) ;
95+ return UniqueKeyTransitionDto . noTransition ( ) ;
9496 }
9597 const constraintOptions =
9698 getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions ( newColumnJsonSchema ) ;
@@ -100,15 +102,16 @@ const wasCompositeUniqueKeyChangedInTransitionFromCompositeToRegular = collectio
100102 }
101103 const oldCompositeUniqueKeyAsRegularUniqueKeyOptions =
102104 getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions ( compositeUniqueKey ) ;
103- return _ ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions ) . differenceWith ( constraintOptions , _ . isEqual ) . isEmpty ( ) ;
105+
106+ return areConstraintOptionsEqual ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions , constraintOptions ) ;
104107 } ) ;
105108
106- return KeyTransitionDto . transition ( ! areOptionsEqual ) ;
109+ return UniqueKeyTransitionDto . transition ( ! areOptionsEqual ) ;
107110} ;
108111
109112/**
110113 * @param {AlterCollectionDto } collection
111- * @return {KeyTransitionDto }
114+ * @return {UniqueKeyTransitionDto }
112115 * */
113116const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collection => {
114117 /**
@@ -123,18 +126,18 @@ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collectio
123126 if ( idsOfColumns . length !== amountOfColumnsInRegularUniqueKey ) {
124127 // We return false, because it wouldn't count as transition between regular UniqueKey and composite UniqueKey
125128 // if composite UniqueKey does not constraint exactly 1 column
126- return KeyTransitionDto . noTransition ( ) ;
129+ return UniqueKeyTransitionDto . noTransition ( ) ;
127130 }
128131 const idOfUniqueKeyColumn = idsOfColumns [ 0 ] ;
129132 const oldColumnJsonSchema = Object . values ( collection . role . properties ) . find (
130133 columnJsonSchema => columnJsonSchema . GUID === idOfUniqueKeyColumn ,
131134 ) ;
132135 if ( ! oldColumnJsonSchema ) {
133- return KeyTransitionDto . noTransition ( ) ;
136+ return UniqueKeyTransitionDto . noTransition ( ) ;
134137 }
135138 const isOldColumnARegularUniqueKey = oldColumnJsonSchema ?. unique && ! oldColumnJsonSchema ?. compositeUniqueKey ;
136139 if ( ! isOldColumnARegularUniqueKey ) {
137- return KeyTransitionDto . noTransition ( ) ;
140+ return UniqueKeyTransitionDto . noTransition ( ) ;
138141 }
139142 const constraintOptions =
140143 getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions ( oldColumnJsonSchema ) ;
@@ -144,10 +147,11 @@ const wasCompositeUniqueKeyChangedInTransitionFromRegularToComposite = collectio
144147 }
145148 const oldCompositeUniqueKeyAsRegularUniqueKeyOptions =
146149 getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions ( compositeUniqueKey ) ;
147- return _ ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions ) . differenceWith ( constraintOptions , _ . isEqual ) . isEmpty ( ) ;
150+
151+ return areConstraintOptionsEqual ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions , constraintOptions ) ;
148152 } ) ;
149153
150- return KeyTransitionDto . transition ( ! areOptionsEqual ) ;
154+ return UniqueKeyTransitionDto . transition ( ! areOptionsEqual ) ;
151155} ;
152156
153157/**
@@ -441,7 +445,7 @@ const wasFieldChangedToBeARegularUniqueKey = (columnJsonSchema, collection) => {
441445/**
442446 * @param {AlterCollectionColumnDto } columnJsonSchema
443447 * @param {AlterCollectionDto } collection
444- * @return {KeyTransitionDto }
448+ * @return {UniqueKeyTransitionDto }
445449 * */
446450const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = ( columnJsonSchema , collection ) => {
447451 const oldName = columnJsonSchema . compMod . oldField . name ;
@@ -451,7 +455,7 @@ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJson
451455 const wasTheFieldAnyUniqueKey = oldColumnJsonSchema ?. unique || oldColumnJsonSchema . compositeUniqueKey ;
452456
453457 if ( ! ( isRegularUniqueKey && wasTheFieldAnyUniqueKey ) ) {
454- return KeyTransitionDto . noTransition ( ) ;
458+ return UniqueKeyTransitionDto . noTransition ( ) ;
455459 }
456460
457461 /**
@@ -484,20 +488,19 @@ const wasRegularUniqueKeyChangedInTransitionFromCompositeToRegular = (columnJson
484488 }
485489 const oldCompositeUniqueKeyAsRegularUniqueKeyOptions =
486490 getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions ( oldCompositeUniqueKey ) ;
487- return _ ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions )
488- . differenceWith ( constraintOptions , _ . isEqual )
489- . isEmpty ( ) ;
491+
492+ return areConstraintOptionsEqual ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions , constraintOptions ) ;
490493 } ) ;
491- return KeyTransitionDto . transition ( ! areOptionsEqual ) ;
494+ return UniqueKeyTransitionDto . transition ( ! areOptionsEqual ) ;
492495 }
493496
494- return KeyTransitionDto . noTransition ( ) ;
497+ return UniqueKeyTransitionDto . noTransition ( ) ;
495498} ;
496499
497500/**
498501 * @param {AlterCollectionColumnDto } columnJsonSchema
499502 * @param {AlterCollectionDto } collection
500- * @return {KeyTransitionDto }
503+ * @return {UniqueKeyTransitionDto }
501504 * */
502505const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = ( columnJsonSchema , collection ) => {
503506 const oldName = columnJsonSchema . compMod . oldField . name ;
@@ -507,7 +510,7 @@ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJson
507510 const isTheFieldAnyUniqueKey = Boolean ( columnJsonSchema ?. unique ) ;
508511
509512 if ( ! ( wasRegularUniqueKey && isTheFieldAnyUniqueKey ) ) {
510- return KeyTransitionDto . noTransition ( ) ;
513+ return UniqueKeyTransitionDto . noTransition ( ) ;
511514 }
512515
513516 /**
@@ -540,14 +543,14 @@ const wasRegularUniqueKeyChangedInTransitionFromRegularToComposite = (columnJson
540543 }
541544 const oldCompositeUniqueKeyAsRegularUniqueKeyOptions =
542545 getCustomPropertiesOfCompositeUniqueKeyForComparisonWithRegularUniqueKeyOptions ( oldCompositeUniqueKey ) ;
543- return _ ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions )
544- . differenceWith ( constraintOptions , _ . isEqual )
545- . isEmpty ( ) ;
546+
547+ return areConstraintOptionsEqual ( oldCompositeUniqueKeyAsRegularUniqueKeyOptions , constraintOptions ) ;
546548 } ) ;
547- return KeyTransitionDto . transition ( ! areOptionsEqual ) ;
549+
550+ return UniqueKeyTransitionDto . transition ( ! areOptionsEqual ) ;
548551 }
549552
550- return KeyTransitionDto . noTransition ( ) ;
553+ return UniqueKeyTransitionDto . noTransition ( ) ;
551554} ;
552555
553556/**
@@ -584,8 +587,8 @@ const wasRegularUniqueKeyModified = (columnJsonSchema, collection) => {
584587 getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions ( columnJsonSchema ) ;
585588 const oldConstraintOptions =
586589 getCustomPropertiesOfRegularUniqueKeyForComparisonWithRegularUniqueKeyOptions ( oldJsonSchema ) ;
587- const areOptionsEqual = _ ( oldConstraintOptions ) . differenceWith ( constraintOptions , _ . isEqual ) . isEmpty ( ) ;
588- return ! areOptionsEqual ;
590+
591+ return ! areConstraintOptionsEqual ( oldConstraintOptions , constraintOptions ) ;
589592} ;
590593
591594/**
0 commit comments