1
+ "use strict" ;
2
+
3
+ var HEADER = "Table,Column,Before,After,Changes" ;
4
+ var fs = require ( "fs" ) ;
5
+ var os = require ( "os" ) ;
6
+ var constants = require ( "./constants" ) ;
7
+ var format = require ( "util" ) . format ;
8
+
9
+ var LABELS = { } ;
10
+ var DIFF_WRITERS = { } ;
11
+
12
+
13
+ LABELS [ constants . ADDED_COLUMN ] = "Added" ;
14
+ DIFF_WRITERS [ constants . ADDED_COLUMN ] = function ( stream , tableName , difference ) {
15
+ stream . write ( format ( "%s,%s,,,%s" , tableName , difference . definition ,
16
+ LABELS [ constants . ADDED_COLUMN ] ) ) ;
17
+ } ;
18
+
19
+ LABELS [ constants . ADDED_TABLE ] = "Table added" ;
20
+ DIFF_WRITERS [ constants . ADDED_TABLE ] = function ( stream , tableName , difference ) {
21
+ stream . write ( format ( "%s,%s,,,%s" , tableName , tableName , LABELS [ constants . ADDED_TABLE ] ) ) ;
22
+ } ;
23
+
24
+ LABELS [ constants . CHANGED_COLUMN_NAME ] = "Name" ;
25
+ DIFF_WRITERS [ constants . CHANGED_COLUMN_NAME ] = function ( stream , tableName , difference ) {
26
+ stream . write ( format ( "%s,%s,%s,,%s" , tableName , difference . name , difference . from ,
27
+ LABELS [ constants . CHANGED_COLUMN_NAME ] ) ) ;
28
+ } ;
29
+
30
+ LABELS [ constants . CHANGED_COLUMN_OBLIGATION ] = "Essentiality type" ;
31
+ DIFF_WRITERS [ constants . CHANGED_COLUMN_OBLIGATION ] = function ( stream , tableName , difference ) {
32
+ stream . write ( format ( "%s,%s,%s,%s,%s" , tableName , difference . name , nullability ( difference . from ) ,
33
+ nullability ( difference . to ) , LABELS [ constants . CHANGED_COLUMN_OBLIGATION ] ) ) ;
34
+ } ;
35
+ function nullability ( isMandatory ) {
36
+ return isMandatory ? "NOT NULL" : "NULL" ;
37
+ }
38
+
39
+ LABELS [ constants . CHANGED_COLUMN_TYPE ] = "Data type" ;
40
+ DIFF_WRITERS [ constants . CHANGED_COLUMN_TYPE ] = function ( stream , tableName , difference ) {
41
+ stream . write ( format ( "%s,%s,%s,%s,%s" , tableName , difference . name , difference . from , difference . to ,
42
+ LABELS [ constants . CHANGED_COLUMN_TYPE ] ) ) ;
43
+ } ;
44
+
45
+ LABELS [ constants . REMOVED_COLUMN ] = "Removed" ;
46
+ DIFF_WRITERS [ constants . REMOVED_COLUMN ] = function ( stream , tableName , difference ) {
47
+ stream . write ( format ( "%s,%s,,,%s" , tableName , difference . name , LABELS [ constants . REMOVED_COLUMN ] ) ) ;
48
+ } ;
49
+
50
+
51
+ LABELS [ constants . REMOVED_TABLE ] = "Table removed" ;
52
+ DIFF_WRITERS [ constants . REMOVED_TABLE ] = function ( stream , tableName , difference ) {
53
+ stream . write ( format ( "%s,%s,,,%s" , tableName , tableName , LABELS [ constants . REMOVED_TABLE ] ) ) ;
54
+ } ;
55
+
56
+ exports . generate = function ( differences , fileName , done ) {
57
+
58
+ var stream = fs . createWriteStream ( fileName ) ;
59
+
60
+ stream . write ( HEADER + os . EOL ) ;
61
+
62
+ differences . forEach ( function ( differencesInTable ) {
63
+ differencesInTable . forEach ( function ( difference ) {
64
+ DIFF_WRITERS [ difference . type ] ( stream , differencesInTable . tableName , difference ) ;
65
+ stream . write ( os . EOL ) ;
66
+ } ) ;
67
+ } ) ;
68
+ stream . end ( ) ;
69
+
70
+ done ( null ) ;
71
+ } ;
0 commit comments