2
2
3
3
var constants = require ( "./constants" ) ;
4
4
5
+ exports . processRenamedColumns = function ( sqlDefinition , renamingDictionary ) {
6
+ var potentialRenamings = Object . keys ( renamingDictionary ) ;
7
+ var columnsWithChangesNames = [ ] ;
8
+ var addedColumnNames = sqlDefinition . addedColumns . map ( function ( column ) {
9
+ return column . name ;
10
+ } ) ;
11
+ var removedColumnNames = sqlDefinition . removedColumns . map ( function ( column ) {
12
+ return column . name ;
13
+ } ) ;
14
+
15
+ addedColumnNames . forEach ( function ( addedColumnName ) {
16
+ removedColumnNames . forEach ( function ( removedColumnName ) {
17
+ if ( potentialRenamings . indexOf ( removedColumnName ) !== - 1 &&
18
+ renamingDictionary [ removedColumnName ] === addedColumnName ) {
19
+
20
+ columnsWithChangesNames . push ( {
21
+ from : sqlDefinition . removedColumns . filter ( function ( column ) {
22
+ return column . name === removedColumnName ;
23
+ } ) [ 0 ] ,
24
+ to : sqlDefinition . addedColumns . filter ( function ( column ) {
25
+ return column . name === addedColumnName ;
26
+ } ) [ 0 ]
27
+ } ) ;
28
+ }
29
+ } ) ;
30
+ } ) ;
31
+
32
+ columnsWithChangesNames . forEach ( function ( duplicate ) {
33
+ sqlDefinition . addedColumns . splice ( sqlDefinition . addedColumns . indexOf ( duplicate . to ) , 1 ) ;
34
+ addedColumnNames . splice ( addedColumnNames . indexOf ( duplicate . to . name ) , 1 ) ;
35
+ sqlDefinition . removedColumns . splice ( sqlDefinition . removedColumns . indexOf ( duplicate . from ) , 1 ) ;
36
+ removedColumnNames . splice ( removedColumnNames . indexOf ( duplicate . from . name ) , 1 ) ;
37
+ } ) ;
38
+
39
+ sqlDefinition . columnsWithSameNames = sqlDefinition . columnsWithSameNames . concat ( columnsWithChangesNames ) ;
40
+ } ;
41
+
5
42
exports . processSqlDefinitions = function ( sqlDefinition ) {
6
43
var diff = [ ] ;
7
44
diff . tableName = sqlDefinition . newTableName ;
@@ -27,32 +64,15 @@ exports.processSqlDefinitions = function(sqlDefinition) {
27
64
name : removedColumn . name
28
65
} ) ;
29
66
} ) ;
30
- sqlDefinition . columnsWithChangedNames . forEach ( function ( changedColumn ) {
31
- diff . push ( {
32
- type : constants . CHANGED_COLUMN_NAME ,
33
- name : changedColumn . to . name ,
34
- from : changedColumn . from . name
35
- } ) ;
36
67
37
- if ( changedColumn . from . type !== changedColumn . to . type ) {
38
- diff . push ( {
39
- type : constants . CHANGED_COLUMN_TYPE ,
40
- name : changedColumn . to . name ,
41
- from : changedColumn . from . type ,
42
- to : changedColumn . to . type
43
- } ) ;
44
- }
45
- if ( changedColumn . from . mandatory !== changedColumn . to . mandatory ) {
68
+ sqlDefinition . columnsWithSameNames . forEach ( function ( changedColumn ) {
69
+ if ( changedColumn . from . name !== changedColumn . to . name ) {
46
70
diff . push ( {
47
- type : constants . CHANGED_COLUMN_OBLIGATION ,
71
+ type : constants . CHANGED_COLUMN_NAME ,
48
72
name : changedColumn . to . name ,
49
- from : changedColumn . from . mandatory ,
50
- to : changedColumn . to . mandatory
73
+ from : changedColumn . from . name
51
74
} ) ;
52
75
}
53
- } ) ;
54
-
55
- sqlDefinition . columnsWithSameNames . forEach ( function ( changedColumn ) {
56
76
if ( changedColumn . from . type !== changedColumn . to . type ) {
57
77
diff . push ( {
58
78
type : constants . CHANGED_COLUMN_TYPE ,
0 commit comments