@@ -238,6 +238,12 @@ var PgDriver = Base.extend({
238
238
return this . all ( 'SET search_path TO ' + searchPath ) ;
239
239
} . bind ( this )
240
240
)
241
+ . then (
242
+ function ( ) {
243
+ // create schema if not exists
244
+ return this . all ( 'SET search_path TO ' + this . schema ) ;
245
+ } . bind ( this )
246
+ )
241
247
. then (
242
248
function ( ) {
243
249
return this . all (
@@ -394,6 +400,12 @@ var PgDriver = Base.extend({
394
400
} ,
395
401
396
402
renameTable : function ( tableName , newTableName , callback ) {
403
+ let options = { } ;
404
+ if ( typeof callback === 'object' ) {
405
+ options = callback ;
406
+ callback = null ;
407
+ }
408
+
397
409
var sql = util . format (
398
410
'ALTER TABLE "%s" RENAME TO "%s"' ,
399
411
tableName ,
@@ -403,6 +415,20 @@ var PgDriver = Base.extend({
403
415
} ,
404
416
405
417
removeColumn : function ( tableName , columnName , callback ) {
418
+ let options = { } ;
419
+ if ( typeof callback === 'object' ) {
420
+ options = callback ;
421
+ callback = null ;
422
+ }
423
+
424
+ if ( options . columnStrategy === 'delay' ) {
425
+ return this . renameColumn (
426
+ tableName ,
427
+ columnName ,
428
+ options . passthrough . column
429
+ ) ;
430
+ }
431
+
406
432
var sql = util . format (
407
433
'ALTER TABLE "%s" DROP COLUMN "%s"' ,
408
434
tableName ,
@@ -413,6 +439,12 @@ var PgDriver = Base.extend({
413
439
} ,
414
440
415
441
renameColumn : function ( tableName , oldColumnName , newColumnName , callback ) {
442
+ let options = { } ;
443
+ if ( typeof callback === 'object' ) {
444
+ options = callback ;
445
+ callback = null ;
446
+ }
447
+
416
448
var sql = util . format (
417
449
'ALTER TABLE "%s" RENAME COLUMN "%s" TO "%s"' ,
418
450
tableName ,
@@ -423,7 +455,13 @@ var PgDriver = Base.extend({
423
455
} ,
424
456
425
457
changeColumn : function ( tableName , columnName , columnSpec , callback ) {
426
- return setNotNull . call ( this ) ;
458
+ let options = { } ;
459
+ if ( typeof callback === 'object' ) {
460
+ options = callback ;
461
+ callback = null ;
462
+ }
463
+
464
+ return setNotNull . call ( this ) . nodeify ( callback ) ;
427
465
428
466
function setNotNull ( ) {
429
467
var setOrDrop = columnSpec . notNull === true ? 'SET' : 'DROP' ;
@@ -434,14 +472,10 @@ var PgDriver = Base.extend({
434
472
setOrDrop
435
473
) ;
436
474
437
- return this . runSql ( sql ) . nodeify ( setUnique . bind ( this ) ) ;
475
+ return this . runSql ( sql ) . then ( setUnique . bind ( this ) ) ;
438
476
}
439
477
440
- function setUnique ( err ) {
441
- if ( err ) {
442
- return Promise . reject ( err ) ;
443
- }
444
-
478
+ function setUnique ( ) {
445
479
var sql ;
446
480
var constraintName = tableName + '_' + columnName + '_key' ;
447
481
@@ -452,24 +486,20 @@ var PgDriver = Base.extend({
452
486
constraintName ,
453
487
columnName
454
488
) ;
455
- return this . runSql ( sql ) . nodeify ( setDefaultValue . bind ( this ) ) ;
489
+ return this . runSql ( sql ) . then ( setDefaultValue . bind ( this ) ) ;
456
490
} else if ( columnSpec . unique === false ) {
457
491
sql = util . format (
458
492
'ALTER TABLE "%s" DROP CONSTRAINT "%s"' ,
459
493
tableName ,
460
494
constraintName
461
495
) ;
462
- return this . runSql ( sql ) . nodeify ( setDefaultValue . bind ( this ) ) ;
496
+ return this . runSql ( sql ) . then ( setDefaultValue . bind ( this ) ) ;
463
497
} else {
464
498
return setDefaultValue . call ( this ) ;
465
499
}
466
500
}
467
501
468
- function setDefaultValue ( err ) {
469
- if ( err ) {
470
- return Promise . reject ( err ) . nodeify ( callback ) ;
471
- }
472
-
502
+ function setDefaultValue ( ) {
473
503
var sql ;
474
504
475
505
if ( columnSpec . defaultValue !== undefined ) {
@@ -492,9 +522,7 @@ var PgDriver = Base.extend({
492
522
columnName
493
523
) ;
494
524
}
495
- return this . runSql ( sql )
496
- . then ( setType . bind ( this ) )
497
- . nodeify ( callback ) ;
525
+ return this . runSql ( sql ) . then ( setType . bind ( this ) ) ;
498
526
}
499
527
500
528
function setType ( ) {
@@ -553,6 +581,12 @@ var PgDriver = Base.extend({
553
581
} ,
554
582
555
583
removeForeignKey : function ( tableName , keyName , callback ) {
584
+ let options = { } ;
585
+ if ( typeof callback === 'object' ) {
586
+ options = callback ;
587
+ callback = null ;
588
+ }
589
+
556
590
var sql = util . format (
557
591
'ALTER TABLE "%s" DROP CONSTRAINT "%s"' ,
558
592
tableName ,
@@ -654,6 +688,16 @@ var PgDriver = Base.extend({
654
688
if ( typeof callback === 'function' ) {
655
689
return Promise . resolve ( ) . nodeify ( callback ) ;
656
690
} else return Promise . resolve ( ) ;
691
+ } ,
692
+
693
+ _meta : {
694
+ supports : {
695
+ // all legacy callbacks can be option objects
696
+ optionParam : true ,
697
+ // support for column strategies for example on dropping not
698
+ // null columns
699
+ columnStrategies : true
700
+ }
657
701
}
658
702
} ) ;
659
703
0 commit comments