@@ -9,7 +9,16 @@ const { mergeArrays, checkIsOldModel, fieldTypeCompatible } = require('./updateH
9
9
const { getViewScript } = require ( './updateHelpers/viewHelper' ) ;
10
10
const { getIndexTable, getDataColumnIndex } = require ( './updateHelpers/indexHelper' ) ;
11
11
const { getUdtScript, sortAddedUdt } = require ( './updateHelpers/udtHelper' ) ;
12
- const { alterTablePrefix, getDelete, hydrateColumn, isTableChange, getTableParameter } = require ( './updateHelpers/tableHelper' ) ;
12
+ const {
13
+ alterTablePrefix,
14
+ getDelete,
15
+ hydrateColumn,
16
+ isTableChange,
17
+ getTableParameter,
18
+ addColumnInExistScript,
19
+ getAdd,
20
+ } = require ( './updateHelpers/tableHelper' ) ;
21
+ const { getUdtMap } = require ( './udtHelper' ) ;
13
22
14
23
let _ ;
15
24
@@ -19,19 +28,8 @@ const getUpdateType = updateTypeData =>
19
28
`${ alterTablePrefix ( updateTypeData . tableName , updateTypeData . keySpace ) }
20
29
ALTER "${ updateTypeData . columnData . name } " TYPE ${ updateTypeData . columnData . type } ;` ;
21
30
22
- const addColumnStatement = columnData => `ADD "${ columnData . name } " ${ columnData . type } ` ;
23
31
const renameColumnStatement = columnData => `RENAME "${ columnData . oldName } " TO "${ columnData . newName } "` ;
24
32
25
- const getAdd = addData => {
26
- const script = `${ alterTablePrefix ( addData . tableName , addData . keyspaceName ) } ${ addColumnStatement ( addData . columnData ) } ;` ;
27
- return [ {
28
- deleted : false ,
29
- modified : false ,
30
- added : true ,
31
- script,
32
- field : 'field' ,
33
- } ] ;
34
- } ;
35
33
const getRenameColumn = renameData => {
36
34
const script =
37
35
`${ alterTablePrefix ( renameData . tableName , renameData . keyspaceName ) } ${ renameColumnStatement ( renameData . columnData ) } ;` ;
@@ -117,6 +115,7 @@ const getUpdate = updateData => {
117
115
} else if ( hydratedColumn . isTypeChange ) {
118
116
return getUpdateColumnProvider . alterType ( hydratedColumn ) ;
119
117
}
118
+ addColumnInExistScript ( hydratedColumn . dataForScript ) ;
120
119
121
120
return [ ] ;
122
121
} ;
@@ -168,7 +167,6 @@ const getUpdateTable = updateData => {
168
167
const { item, propertiesScript = [ ] } = updateData ;
169
168
const { oldName, newName } = getCollectionName ( item . role ?. compMod ) ;
170
169
171
- const indexTableScript = getIndexTable ( item , updateData . data ) ;
172
170
const compModeWithName = { ...item . role ?. compMod || { } , name : { new : newName , old : oldName } }
173
171
174
172
const tableIsChange = isTableChange ( {
@@ -177,7 +175,9 @@ const getUpdateTable = updateData => {
177
175
role : { ...item . role , compMod : compModeWithName } ,
178
176
} ,
179
177
data : updateData . data ,
178
+ dataSources : updateData . dataSources ,
180
179
} ) ;
180
+ const indexTableScript = getIndexTable ( item , updateData . data , tableIsChange ) ;
181
181
182
182
if ( ! tableIsChange ) {
183
183
const tableName = updateData . tableName || oldName || newName ;
@@ -210,8 +210,8 @@ const getUpdateTable = updateData => {
210
210
tableOptions : getTableParameter ( item , 'tableOptions' ) || { } ,
211
211
}
212
212
} ,
213
- modifiedProperties : item . properties ,
214
213
isKeyspaceActivated : true ,
214
+ dataSources : updateData . dataSources ,
215
215
} ;
216
216
const deleteScript = getDeleteTable ( { ...data , tableName : oldName } ) ;
217
217
const addScript = getAddTable ( { ...data , tableName : newName } ) ;
@@ -282,22 +282,33 @@ const handleItem = (item, udtMap, generator, data) => {
282
282
] ;
283
283
}
284
284
285
+ const dataSources = [
286
+ data . modelDefinitions ,
287
+ data . internalDefinitions ,
288
+ data . externalDefinitions ,
289
+ tableProperties ,
290
+ { properties : _ . get ( itemProperties [ tableKey ] , 'role.properties' , [ ] ) } ,
291
+ { properties : _ . get ( itemProperties [ tableKey ] , 'role.compMod.newProperties' , [ ] ) } ,
292
+ { properties : _ . get ( itemProperties [ tableKey ] , 'role.compMod.oldProperties' , [ ] ) }
293
+ ] ;
294
+
285
295
if ( itemCompModData . created ) {
286
296
const addedIndexScript = getIndexTable ( itemProperties [ tableKey ] , data ) ;
287
297
return [
288
298
...alterTableScript ,
289
299
...getAddTable ( {
290
300
item : itemProperties [ tableKey ] ,
291
- keyspaceName,
301
+ keyspaceName,
292
302
data,
293
303
tableName,
304
+ dataSources,
294
305
} ) ,
295
306
...addedIndexScript ,
296
307
] ;
297
308
}
298
309
299
310
if ( itemCompModData . modified ) {
300
- const updateTableScript = getUpdateTable ( { keyspaceName, data, item : itemProperties [ tableKey ] , isOptionScript : true , tableName } ) ;
311
+ const updateTableScript = getUpdateTable ( { keyspaceName, data, item : itemProperties [ tableKey ] , isOptionScript : true , tableName, dataSources } ) ;
301
312
302
313
return [ ...alterTableScript , ...updateTableScript ] ;
303
314
}
@@ -311,6 +322,7 @@ const handleItem = (item, udtMap, generator, data) => {
311
322
tableName,
312
323
isOldModel,
313
324
data,
325
+ dataSources,
314
326
} ) ;
315
327
316
328
const updateTableScript = getUpdateTable ( {
@@ -320,6 +332,7 @@ const handleItem = (item, udtMap, generator, data) => {
320
332
keyspaceName,
321
333
tableName,
322
334
data,
335
+ dataSources,
323
336
} )
324
337
325
338
return [ ...alterTableScript , ...updateTableScript ] ;
@@ -329,7 +342,7 @@ const handleItem = (item, udtMap, generator, data) => {
329
342
}
330
343
331
344
const getAddTable = ( addTableData ) => {
332
- const table = addTableData . item ;
345
+ let table = addTableData . item ;
333
346
const data = addTableData . data ;
334
347
const compositePartitionKey = getTableParameter ( table , 'compositePartitionKey' ) || [ ] ;
335
348
const compositeClusteringKey = getTableParameter ( table , 'compositeClusteringKey' ) || [ ] ;
@@ -343,19 +356,11 @@ const getAddTable = (addTableData) => {
343
356
isActivated : table . role . isActivated ,
344
357
} ] ;
345
358
346
- const dataSources = [
347
- data . externalDefinitions ,
348
- data . modelDefinitions ,
349
- data . internalDefinitions ,
350
- table ,
351
- { properties : addTableData . modifiedProperties || [ ] }
352
- ] ;
353
-
354
359
const script = getTableStatement ( {
355
360
tableData : table ,
356
361
tableMetaData : entityData ,
357
362
keyspaceMetaData : [ { name : addTableData . keyspaceName } ] ,
358
- dataSources,
363
+ dataSources : addTableData . dataSources ,
359
364
udtTypeMap : data . udtTypeMap || { } ,
360
365
isKeyspaceActivated : addTableData . isKeyspaceActivated ,
361
366
} ) ;
@@ -369,13 +374,16 @@ const getAddTable = (addTableData) => {
369
374
} ] ;
370
375
}
371
376
372
- const handleProperties = ( { generator, tableProperties, udtMap, itemCompModData, tableName, isOldModel, data, item } ) => {
377
+ const handleProperties = ( { generator, tableProperties, udtMap, itemCompModData, tableName, isOldModel, data, item, dataSources } ) => {
373
378
return Object . keys ( tableProperties )
374
379
. reduce ( ( alterTableScript , columnName ) => {
375
380
const property = tableProperties [ columnName ] ;
376
381
if ( generator . name !== 'getUpdate' && ( property . compositePartitionKey || property . compositeClusteringKey ) ) {
377
382
return alterTableScript ;
378
383
}
384
+ if ( generator . name === 'getAdd' && ( property || { } ) . hasOwnProperty ( 'compMod' ) ) {
385
+ return alterTableScript ;
386
+ }
379
387
let columnType = getTypeByData ( property , udtMap , columnName ) ;
380
388
381
389
if ( property . $ref && ! columnType ) {
@@ -405,7 +413,8 @@ const handleProperties = ({ generator, tableProperties, udtMap, itemCompModData,
405
413
} ,
406
414
property,
407
415
isOldModel,
408
- udtMap
416
+ udtMap,
417
+ dataSources,
409
418
} )
410
419
] ;
411
420
} , [ ] ) ;
@@ -486,14 +495,14 @@ const getAlterTableScript = (child, udtMap, data) => {
486
495
alterScript = mergeArrays ( alterScript , getScript ( sortAddedUdt ( child . modelDefinitions ) , udtMap , data , 'udt' ) ) ;
487
496
}
488
497
489
- if ( objectContainsProp ( child , 'added' ) ) {
490
- alterScript = mergeArrays ( alterScript , handleChange ( child . added , udtMap , getAdd , data ) ) ;
491
- }
492
-
493
498
if ( objectContainsProp ( child , 'modified' ) ) {
494
499
alterScript = mergeArrays ( alterScript , handleChange ( child . modified , udtMap , getUpdate , data ) ) ;
495
500
}
496
501
502
+ if ( objectContainsProp ( child , 'added' ) ) {
503
+ alterScript = mergeArrays ( alterScript , handleChange ( child . added , udtMap , getAdd , data ) ) ;
504
+ }
505
+
497
506
if ( objectContainsProp ( child , 'deleted' ) ) {
498
507
alterScript = mergeArrays ( alterScript , handleChange ( child . deleted , udtMap , getDelete , data ) ) ;
499
508
}
@@ -503,7 +512,12 @@ const getAlterTableScript = (child, udtMap, data) => {
503
512
504
513
const getAlterScript = ( child , udtMap , data ) => {
505
514
setDependencies ( dependencies ) ;
506
- let scriptData = getAlterTableScript ( child , udtMap , data ) ;
515
+ const generalUdtTypeMap = Object . assign (
516
+ { } ,
517
+ udtMap ,
518
+ getUdtMap ( [ child ] )
519
+ ) ;
520
+ let scriptData = getAlterTableScript ( child , generalUdtTypeMap , data ) ;
507
521
scriptData = _ . uniqWith ( scriptData , _ . isEqual ) ;
508
522
scriptData = getCommentedDropScript ( scriptData , data ) ;
509
523
scriptData = sortScript ( scriptData ) ;
0 commit comments