db-migrate-pg
Advanced tools
Comparing version 0.4.0 to 0.5.0
@@ -0,1 +1,12 @@ | ||
<a name="0.5.0"></a> | ||
# [0.5.0](https://github.com/db-migrate/pg/compare/v0.4.0...v0.5.0) (2019-02-11) | ||
### Features | ||
* **defaultValue:** add advanced handling for defaultValues ([a13c0e0](https://github.com/db-migrate/pg/commit/a13c0e0)) | ||
* **defaultValue:** add support for timestamps and add internal handling ([46f01a2](https://github.com/db-migrate/pg/commit/46f01a2)) | ||
<a name="0.4.0"></a> | ||
@@ -2,0 +13,0 @@ # [0.4.0](https://github.com/db-migrate/pg/compare/v0.3.1...v0.4.0) (2018-04-02) |
141
index.js
@@ -10,3 +10,3 @@ var util = require('util'); | ||
var PgDriver = Base.extend({ | ||
init: function (connection, schema, intern) { | ||
init: function(connection, schema, intern) { | ||
this.log = intern.mod.log; | ||
@@ -21,3 +21,3 @@ this.type = intern.mod.type; | ||
startMigration: function (cb) { | ||
startMigration: function(cb) { | ||
if (!this.internals.notransactions) { | ||
@@ -28,3 +28,3 @@ return this.runSql('BEGIN;').nodeify(cb); | ||
endMigration: function (cb) { | ||
endMigration: function(cb) { | ||
if (!this.internals.notransactions) { | ||
@@ -35,6 +35,6 @@ return this.runSql('COMMIT;').nodeify(cb); | ||
createColumnDef: function (name, spec, options, tableName) { | ||
createColumnDef: function(name, spec, options, tableName) { | ||
// add support for datatype timetz, timestamptz | ||
// https://www.postgresql.org/docs/9.5/static/datatype.html | ||
spec.type = spec.type.replace(/^(time|timestamp)tz$/, function ($, type) { | ||
spec.type = spec.type.replace(/^(time|timestamp)tz$/, function($, type) { | ||
spec.timezone = true; | ||
@@ -63,3 +63,19 @@ return type; | ||
mapDataType: function (str) { | ||
_translateSpecialDefaultValues: function( | ||
spec, | ||
options, | ||
tableName, | ||
columnName | ||
) { | ||
switch (spec.defaultValue.special) { | ||
case 'CURRENT_TIMESTAMP': | ||
spec.defaultValue.prep = 'CURRENT_TIMESTAMP'; | ||
break; | ||
default: | ||
this.super(spec, options, tableName, columnName); | ||
break; | ||
} | ||
}, | ||
mapDataType: function(str) { | ||
switch (str) { | ||
@@ -79,3 +95,3 @@ case 'json': | ||
createDatabase: function (dbName, options, callback) { | ||
createDatabase: function(dbName, options, callback) { | ||
var spec = ''; | ||
@@ -91,3 +107,3 @@ | ||
dropDatabase: function (dbName, options, callback) { | ||
dropDatabase: function(dbName, options, callback) { | ||
var ifExists = ''; | ||
@@ -106,3 +122,3 @@ | ||
createSequence: function (sqName, options, callback) { | ||
createSequence: function(sqName, options, callback) { | ||
var spec = ''; | ||
@@ -122,3 +138,3 @@ var temp = ''; | ||
switchDatabase: function (options, callback) { | ||
switchDatabase: function(options, callback) { | ||
if (typeof options === 'object') { | ||
@@ -139,3 +155,3 @@ if (typeof options.database === 'string') { | ||
dropSequence: function (dbName, options, callback) { | ||
dropSequence: function(dbName, options, callback) { | ||
var ifExists = ''; | ||
@@ -158,3 +174,3 @@ var rule = ''; | ||
createMigrationsTable: function (callback) { | ||
createMigrationsTable: function(callback) { | ||
var options = { | ||
@@ -176,8 +192,4 @@ columns: { | ||
.then( | ||
function (result) { | ||
if ( | ||
result && | ||
result.length > 0 && | ||
result[0].server_version_num | ||
) { | ||
function(result) { | ||
if (result && result.length > 0 && result[0].server_version_num) { | ||
var version = result[0].server_version_num; | ||
@@ -187,3 +199,3 @@ var major = Math.floor(version / 10000); | ||
var patch = Math.floor(version - major * 10000 - minor * 100); | ||
version = major + '.' + minor + '.' + patch | ||
version = major + '.' + minor + '.' + patch; | ||
options.ifNotExists = semver.gte(version, '9.1.0'); | ||
@@ -199,11 +211,6 @@ } | ||
// not all DBs support server_version_num, fall back to server_version | ||
function () { | ||
return this.all('show server_version') | ||
.then( | ||
function (result) { | ||
if ( | ||
result && | ||
result.length > 0 && | ||
result[0].server_version | ||
) { | ||
function() { | ||
return this.all('show server_version').then( | ||
function(result) { | ||
if (result && result.length > 0 && result[0].server_version) { | ||
var version = result[0].server_version; | ||
@@ -222,7 +229,7 @@ // handle versions like “10.2 (Ubuntu 10.2)” | ||
}.bind(this) | ||
) | ||
); | ||
}.bind(this) | ||
) | ||
.then( | ||
function (result) { | ||
function(result) { | ||
var searchPath; | ||
@@ -252,3 +259,3 @@ var searchPathes = result[0].search_path.split(','); | ||
.then( | ||
function () { | ||
function() { | ||
return this.all( | ||
@@ -263,3 +270,3 @@ "SELECT table_name FROM information_schema.tables WHERE table_name = '" + | ||
.then( | ||
function (result) { | ||
function(result) { | ||
if (result && result && result.length < 1) { | ||
@@ -275,3 +282,3 @@ return this.createTable(this.internals.migrationTable, options); | ||
createSeedsTable: function (callback) { | ||
createSeedsTable: function(callback) { | ||
var options = { | ||
@@ -293,3 +300,3 @@ columns: { | ||
.then( | ||
function (result) { | ||
function(result) { | ||
if (result && result && result.length > 0 && result[0].version) { | ||
@@ -309,3 +316,3 @@ var version = result[0].version; | ||
.then( | ||
function (result) { | ||
function(result) { | ||
var searchPath; | ||
@@ -326,3 +333,3 @@ | ||
.then( | ||
function () { | ||
function() { | ||
return this.all( | ||
@@ -337,3 +344,3 @@ "SELECT table_name FROM information_schema.tables WHERE table_name = '" + | ||
.then( | ||
function (result) { | ||
function(result) { | ||
if (result && result && result.length < 1) { | ||
@@ -349,3 +356,3 @@ return this.createTable(this.internals.seedTable, options); | ||
createColumnConstraint: function (spec, options, tableName, columnName) { | ||
createColumnConstraint: function(spec, options, tableName, columnName) { | ||
var constraint = []; | ||
@@ -381,2 +388,4 @@ var callbacks = []; | ||
constraint.push("'" + spec.defaultValue + "'"); | ||
} else if (typeof spec.defaultValue.prep === 'string') { | ||
constraint.push(spec.defaultValue.prep); | ||
} else { | ||
@@ -394,3 +403,3 @@ constraint.push(spec.defaultValue); | ||
callbacks.push( | ||
function (tableName, columnName, comment, callback) { | ||
function(tableName, columnName, comment, callback) { | ||
var sql = util.format( | ||
@@ -414,3 +423,3 @@ "COMMENT on COLUMN %s.%s IS '%s'", | ||
renameTable: function (tableName, newTableName, callback) { | ||
renameTable: function(tableName, newTableName, callback) { | ||
var sql = util.format( | ||
@@ -424,3 +433,3 @@ 'ALTER TABLE "%s" RENAME TO "%s"', | ||
removeColumn: function (tableName, columnName, callback) { | ||
removeColumn: function(tableName, columnName, callback) { | ||
var sql = util.format( | ||
@@ -435,3 +444,3 @@ 'ALTER TABLE "%s" DROP COLUMN "%s"', | ||
renameColumn: function (tableName, oldColumnName, newColumnName, callback) { | ||
renameColumn: function(tableName, oldColumnName, newColumnName, callback) { | ||
var sql = util.format( | ||
@@ -446,6 +455,6 @@ 'ALTER TABLE "%s" RENAME COLUMN "%s" TO "%s"', | ||
changeColumn: function (tableName, columnName, columnSpec, callback) { | ||
changeColumn: function(tableName, columnName, columnSpec, callback) { | ||
return setNotNull.call(this); | ||
function setNotNull () { | ||
function setNotNull() { | ||
var setOrDrop = columnSpec.notNull === true ? 'SET' : 'DROP'; | ||
@@ -462,3 +471,3 @@ var sql = util.format( | ||
function setUnique (err) { | ||
function setUnique(err) { | ||
if (err) { | ||
@@ -491,3 +500,3 @@ return Promise.reject(err); | ||
function setDefaultValue (err) { | ||
function setDefaultValue(err) { | ||
if (err) { | ||
@@ -524,3 +533,3 @@ return Promise.reject(err).nodeify(callback); | ||
function setType () { | ||
function setType() { | ||
if (columnSpec.type !== undefined) { | ||
@@ -531,6 +540,6 @@ var using = | ||
: util.format( | ||
'USING "%s"::%s', | ||
columnName, | ||
this.mapDataType(columnSpec.type) | ||
); | ||
'USING "%s"::%s', | ||
columnName, | ||
this.mapDataType(columnSpec.type) | ||
); | ||
var len = columnSpec.length | ||
@@ -552,3 +561,3 @@ ? util.format('(%s)', columnSpec.length) | ||
addForeignKey: function ( | ||
addForeignKey: function( | ||
tableName, | ||
@@ -566,3 +575,3 @@ referencedTableName, | ||
var columns = Object.keys(fieldMapping); | ||
var referencedColumns = columns.map(function (key) { | ||
var referencedColumns = columns.map(function(key) { | ||
return '"' + fieldMapping[key] + '"'; | ||
@@ -583,3 +592,3 @@ }); | ||
removeForeignKey: function (tableName, keyName, callback) { | ||
removeForeignKey: function(tableName, keyName, callback) { | ||
var sql = util.format( | ||
@@ -593,3 +602,3 @@ 'ALTER TABLE "%s" DROP CONSTRAINT "%s"', | ||
insert: function () { | ||
insert: function() { | ||
var index = 1; | ||
@@ -601,3 +610,3 @@ | ||
arguments[index] = arguments[index].map(function (value) { | ||
arguments[index] = arguments[index].map(function(value) { | ||
return typeof value === 'string' ? value : JSON.stringify(value); | ||
@@ -609,3 +618,3 @@ }); | ||
runSql: function () { | ||
runSql: function() { | ||
var callback; | ||
@@ -639,4 +648,4 @@ var minLength = 1; | ||
return new Promise( | ||
function (resolve, reject) { | ||
var prCB = function (err, data) { | ||
function(resolve, reject) { | ||
var prCB = function(err, data) { | ||
return err ? reject(err) : resolve(data); | ||
@@ -653,3 +662,3 @@ }; | ||
all: function () { | ||
all: function() { | ||
var params = arguments; | ||
@@ -660,8 +669,8 @@ | ||
return new Promise( | ||
function (resolve, reject) { | ||
var prCB = function (err, data) { | ||
function(resolve, reject) { | ||
var prCB = function(err, data) { | ||
return err ? reject(err) : resolve(data); | ||
}; | ||
this.connection.query(params[0], function (err, result) { | ||
this.connection.query(params[0], function(err, result) { | ||
prCB(err, result ? result.rows : result); | ||
@@ -673,3 +682,3 @@ }); | ||
close: function (callback) { | ||
close: function(callback) { | ||
this.connection.end(); | ||
@@ -684,3 +693,3 @@ if (typeof callback === 'function') { | ||
exports.connect = function (config, intern, callback) { | ||
exports.connect = function(config, intern, callback) { | ||
internals = intern; | ||
@@ -695,3 +704,3 @@ | ||
var db = config.db || new pg.Client(config); | ||
db.connect(function (err) { | ||
db.connect(function(err) { | ||
if (err) { | ||
@@ -698,0 +707,0 @@ callback(err); |
{ | ||
"name": "db-migrate-pg", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "A postgresql driver for db-migrate", | ||
@@ -34,4 +34,4 @@ "main": "index.js", | ||
"bluebird": "^3.1.1", | ||
"db-migrate-base": "^1.5.2", | ||
"pg": "^7.4.1", | ||
"db-migrate-base": "^1.6.3", | ||
"pg": "^7.8.0", | ||
"semver": "^5.0.3" | ||
@@ -38,0 +38,0 @@ }, |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
26638
589
Updateddb-migrate-base@^1.6.3
Updatedpg@^7.8.0