1- var Base = require ( ' db-migrate-pg' ) . base ,
2- util = require ( ' util' ) ,
3- pg = require ( 'pg' ) ,
4- log ,
5- type ,
6- Promise = require ( ' bluebird' ) ;
1+ var Base = require ( " db-migrate-pg" ) . base ,
2+ util = require ( " util" ) ,
3+ pg = require ( "pg" ) ,
4+ log ,
5+ type ,
6+ Promise = require ( " bluebird" ) ;
77
88var CockroachDriver = Base . extend ( {
9-
109 init : function ( connection , schema , intern ) {
11-
1210 this . _super ( connection , schema , intern ) ;
1311 } ,
1412
15- addForeignKey : function ( tableName , referencedTableName , keyName , fieldMapping , rules , callback ) {
16- if ( arguments . length === 5 && typeof ( rules ) === 'function' ) {
13+ addForeignKey : function (
14+ tableName ,
15+ referencedTableName ,
16+ keyName ,
17+ fieldMapping ,
18+ rules ,
19+ callback
20+ ) {
21+ if ( arguments . length === 5 && typeof rules === "function" ) {
1722 callback = rules ;
1823 rules = { } ;
1924 }
2025 var columns = Object . keys ( fieldMapping ) ;
21- var referencedColumns = columns . map ( function ( key ) { return '"' + fieldMapping [ key ] + '"' ; } ) ;
22- var sql = util . format ( 'ALTER TABLE "%s" ADD CONSTRAINT "%s" FOREIGN KEY (%s) REFERENCES "%s" (%s)' ,
23- tableName , keyName , this . quoteDDLArr ( columns ) , referencedTableName , referencedColumns ) ;
26+ var referencedColumns = columns . map ( function ( key ) {
27+ return '"' + fieldMapping [ key ] + '"' ;
28+ } ) ;
29+ var sql = util . format (
30+ 'ALTER TABLE "%s" ADD CONSTRAINT "%s" FOREIGN KEY (%s) REFERENCES "%s" (%s)' ,
31+ tableName ,
32+ keyName ,
33+ this . quoteDDLArr ( columns ) ,
34+ referencedTableName ,
35+ referencedColumns
36+ ) ;
2437 return this . runSql ( sql ) . nodeify ( callback ) ;
2538 } ,
2639
2740 _handleMultiPrimaryKeys : function ( primaryKeyColumns ) {
28-
29- return util . format ( ', PRIMARY KEY (%s)' ,
30- this . quoteDDLArr ( primaryKeyColumns . sort ( function ( a , b ) {
31-
32- if ( a . spec . interleave && b . spec . interleave )
33- return 0 ;
34-
35- return a . spec . interleave ? - 1 : 1 ; z
36- } ) . map ( function ( value ) {
37-
38- return value . name ;
39- } ) ) . join ( ', ' ) ) ;
41+ return util . format (
42+ ", PRIMARY KEY (%s)" ,
43+ this . quoteDDLArr (
44+ primaryKeyColumns
45+ . sort ( function ( a , b ) {
46+ if ( a . spec . interleave && b . spec . interleave ) return 0 ;
47+
48+ return a . spec . interleave ? - 1 : 1 ;
49+ z ;
50+ } )
51+ . map ( function ( value ) {
52+ return value . name ;
53+ } )
54+ ) . join ( ", " )
55+ ) ;
4056 } ,
4157
4258 _applyTableOptions : function ( options ) {
43-
44- var sql = '' ,
45- interleave ,
46- interleaves = [ ] ,
47- self = this ;
59+ var sql = "" ,
60+ interleave ,
61+ interleaves = [ ] ,
62+ self = this ;
4863
4964 Object . keys ( options ) . forEach ( function ( key ) {
50-
5165 var option = options [ key ] ;
5266
53- if ( option . interleave ) {
54-
55- if ( typeof ( option . interleave ) === 'string' ) {
56-
57- if ( interleave && interleave !== option . interleave ) {
58-
59- this . log . warn ( 'Ignoring interleave "' + interleave +
60- '", you can only have one!' ) ;
61- }
62- else {
63-
67+ if ( option . interleave ) {
68+ if ( typeof option . interleave === "string" ) {
69+ if ( interleave && interleave !== option . interleave ) {
70+ this . log . warn (
71+ 'Ignoring interleave "' + interleave + '", you can only have one!'
72+ ) ;
73+ } else {
6474 interleave = option . interleave ;
6575 }
6676
@@ -69,90 +79,94 @@ var CockroachDriver = Base.extend({
6979 }
7080 } ) ;
7181
72- if ( interleaves . length > 0 ) {
73-
74- sql = util . format ( ' INTERLEAVE IN PARENT %s (%s)' ,
82+ if ( interleaves . length > 0 ) {
83+ sql = util . format (
84+ " INTERLEAVE IN PARENT %s (%s)" ,
7585 self . escapeDDL ( interleave ) ,
76- self . quoteDDLArr ( interleaves ) . join ( ', ' )
86+ self . quoteDDLArr ( interleaves ) . join ( ", " )
7787 ) ;
7888 }
7989
8090 return sql ;
8191 } ,
8292
8393 _applyExtensions : function ( options ) {
84-
8594 var families = { } ,
86- firstFamily ,
87- indizies = { } ,
88- sql = [ ] ,
89- self = this ;
95+ firstFamily ,
96+ indizies = { } ,
97+ sql = [ ] ,
98+ self = this ;
9099
91100 Object . keys ( options ) . forEach ( function ( key ) {
92-
93101 var option = options [ key ] ;
94102
95- if ( option . family && typeof ( option . family ) === 'string' ) {
96-
103+ if ( option . family && typeof option . family === "string" ) {
97104 families [ option . family ] = families [ option . family ] || [ ] ;
98105 families [ option . family ] . push ( self . escapeDDL ( key ) ) ;
99106
100- if ( option . primaryKey === true )
101- firstFamily = option . family ;
107+ if ( option . primaryKey === true ) firstFamily = option . family ;
102108 }
103109
104- if ( option . foreignKey && typeof ( option . foreignKey ) === ' object' ) {
105-
106- indizies [ option . foreignKey . name ] = indizies [ option . foreignKey . name ] || [ ] ;
110+ if ( option . foreignKey && typeof option . foreignKey === " object" ) {
111+ indizies [ option . foreignKey . name ] =
112+ indizies [ option . foreignKey . name ] || [ ] ;
107113 indizies [ option . foreignKey . name ] . push ( self . escapeDDL ( key ) ) ;
108114 }
109115 } ) ;
110116
111117 Object . keys ( indizies ) . forEach ( function ( key ) {
112-
113- sql . push ( util . format ( 'INDEX %s (%s)' ,
114- self . escapeDDL ( key ) ,
115- indizies [ key ] . join ( ', ' )
116- ) ) ;
118+ sql . push (
119+ util . format (
120+ "INDEX %s (%s)" ,
121+ self . escapeDDL ( key ) ,
122+ indizies [ key ] . join ( ", " )
123+ )
124+ ) ;
117125 } ) ;
118126
119- if ( firstFamily ) {
120-
121- sql . push ( util . format ( 'FAMILY %s (%s)' ,
122- self . escapeDDL ( firstFamily ) ,
123- families [ firstFamily ] . join ( ', ' )
124- ) ) ;
127+ if ( firstFamily ) {
128+ sql . push (
129+ util . format (
130+ "FAMILY %s (%s)" ,
131+ self . escapeDDL ( firstFamily ) ,
132+ families [ firstFamily ] . join ( ", " )
133+ )
134+ ) ;
125135 }
126136
127-
128137 Object . keys ( families ) . forEach ( function ( key ) {
129-
130- if ( key !== firstFamily ) {
131-
132- sql . push ( util . format ( 'FAMILY %s (%s)' ,
133- self . escapeDDL ( key ) ,
134- families [ key ] . join ( ', ' )
135- ) ) ;
138+ if ( key !== firstFamily ) {
139+ sql . push (
140+ util . format (
141+ "FAMILY %s (%s)" ,
142+ self . escapeDDL ( key ) ,
143+ families [ key ] . join ( ", " )
144+ )
145+ ) ;
136146 }
137147 } ) ;
138148
139- if ( sql . length === 0 )
140- return '' ;
149+ if ( sql . length === 0 ) return "" ;
141150
142- return ', ' + sql . join ( ', ' ) ;
151+ return ", " + sql . join ( ", " ) ;
143152 } ,
144153
145154 changeColumn : function ( tableName , columnName , columnSpec , callback ) {
146155 return setNotNull . call ( this ) ;
147156
148157 function setNotNull ( ) {
149158 // in cockroacdb you cannot add a null value afterwards
150- if ( columnSpec . notNull === true ) {
159+ if ( columnSpec . notNull === true ) {
151160 return setUnique . call ( this ) ;
152161 }
153162
154- var setOrDrop = 'DROP' ;
155- var sql = util . format ( 'ALTER TABLE "%s" ALTER COLUMN "%s" %s NOT NULL' , tableName , columnName , setOrDrop ) ;
163+ var setOrDrop = "DROP" ;
164+ var sql = util . format (
165+ 'ALTER TABLE "%s" ALTER COLUMN "%s" %s NOT NULL' ,
166+ tableName ,
167+ columnName ,
168+ setOrDrop
169+ ) ;
156170
157171 return this . runSql ( sql ) . nodeify ( setUnique . bind ( this ) ) ;
158172 }
@@ -163,13 +177,22 @@ var CockroachDriver = Base.extend({
163177 }
164178
165179 var sql ;
166- var constraintName = tableName + '_' + columnName + ' _key' ;
180+ var constraintName = tableName + "_" + columnName + " _key" ;
167181
168182 if ( columnSpec . unique === true ) {
169- sql = util . format ( 'ALTER TABLE "%s" ADD CONSTRAINT "%s" UNIQUE ("%s")' , tableName , constraintName , columnName ) ;
183+ sql = util . format (
184+ 'ALTER TABLE "%s" ADD CONSTRAINT "%s" UNIQUE ("%s")' ,
185+ tableName ,
186+ constraintName ,
187+ columnName
188+ ) ;
170189 return this . runSql ( sql ) . nodeify ( setDefaultValue . bind ( this ) ) ;
171190 } else if ( columnSpec . unique === false ) {
172- sql = util . format ( 'ALTER TABLE "%s" DROP CONSTRAINT "%s"' , tableName , constraintName ) ;
191+ sql = util . format (
192+ 'ALTER TABLE "%s" DROP CONSTRAINT "%s"' ,
193+ tableName ,
194+ constraintName
195+ ) ;
173196 return this . runSql ( sql ) . nodeify ( setDefaultValue . bind ( this ) ) ;
174197 } else {
175198 return setDefaultValue . call ( this ) ;
@@ -185,32 +208,46 @@ var CockroachDriver = Base.extend({
185208
186209 if ( columnSpec . defaultValue !== undefined ) {
187210 var defaultValue = null ;
188- if ( typeof columnSpec . defaultValue === ' string' ) {
211+ if ( typeof columnSpec . defaultValue === " string" ) {
189212 defaultValue = "'" + columnSpec . defaultValue + "'" ;
190213 } else {
191214 defaultValue = columnSpec . defaultValue ;
192215 }
193- sql = util . format ( 'ALTER TABLE "%s" ALTER COLUMN "%s" SET DEFAULT %s' , tableName , columnName , defaultValue ) ;
216+ sql = util . format (
217+ 'ALTER TABLE "%s" ALTER COLUMN "%s" SET DEFAULT %s' ,
218+ tableName ,
219+ columnName ,
220+ defaultValue
221+ ) ;
194222 } else {
195- sql = util . format ( 'ALTER TABLE "%s" ALTER COLUMN "%s" DROP DEFAULT' , tableName , columnName ) ;
223+ sql = util . format (
224+ 'ALTER TABLE "%s" ALTER COLUMN "%s" DROP DEFAULT' ,
225+ tableName ,
226+ columnName
227+ ) ;
196228 }
197- return this . runSql ( sql ) . then (
198- setType . bind ( this )
199- ) . nodeify ( callback ) ;
229+ return this . runSql ( sql )
230+ . then ( setType . bind ( this ) )
231+ . nodeify ( callback ) ;
200232 }
201233
202234 function setType ( ) {
203-
204235 // no changes are possible afterwards in cockroachdb currently
205236 return Promise . resolve ( ) ;
206237 }
207238 }
208239} ) ;
209240
210-
211241exports . connect = function ( config , intern , callback ) {
242+ if ( config . native ) {
243+ pg = pg . native ;
244+ }
245+ var db = config . db || new pg . Client ( config ) ;
212246
213- if ( config . native ) { pg = pg . native ; }
214- var db = config . db || new pg . Client ( config ) ;
247+ db . connect ( function ( err ) {
248+ if ( err ) {
249+ callback ( err ) ;
250+ }
215251 callback ( null , new CockroachDriver ( db , config . database , intern ) ) ;
252+ } ) ;
216253} ;
0 commit comments