Socket
Socket
Sign inDemoInstall

db-migrate

Package Overview
Dependencies
Maintainers
1
Versions
139
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

db-migrate - npm Package Compare versions

Comparing version 0.5.3 to 0.5.4

5

CHANGELOG.md

@@ -165,1 +165,6 @@ ## 0.1.0

- Fixed bug setting default values to values that are falsy #114 (via @wbrady)
## 0.5.4
Fix:
- Add backticks to MySQL driver #114 (via @mstorgaard)

106

lib/driver/mysql.js

@@ -50,2 +50,3 @@ var util = require('util');

createColumnDef: function(name, spec, options) {
name = util.format('`%s`', name);
var t = this.mapDataType(spec);

@@ -101,12 +102,105 @@ var len;

createTable: function(tableName, options, callback) {
log.verbose('creating table:', tableName);
var columnSpecs = options;
var tableOptions = {};
if (options.columns !== undefined) {
columnSpecs = options.columns;
delete options.columns;
tableOptions = options;
}
var ifNotExistsSql = "";
if(tableOptions.ifNotExists) {
ifNotExistsSql = "IF NOT EXISTS";
}
var primaryKeyColumns = [];
var columnDefOptions = {
emitPrimaryKey: false
};
for (var columnName in columnSpecs) {
var columnSpec = this.normalizeColumnSpec(columnSpecs[columnName]);
columnSpecs[columnName] = columnSpec;
if (columnSpec.primaryKey) {
primaryKeyColumns.push(columnName);
}
}
var pkSql = '';
if (primaryKeyColumns.length > 1) {
pkSql = util.format(', PRIMARY KEY (`%s`)', primaryKeyColumns.join('`, `'));
} else {
columnDefOptions.emitPrimaryKey = true;
}
var columnDefs = [];
for (var columnName in columnSpecs) {
var columnSpec = columnSpecs[columnName];
columnDefs.push(this.createColumnDef(columnName, columnSpec, columnDefOptions));
}
var sql = util.format('CREATE TABLE %s `%s` (%s%s)', ifNotExistsSql, tableName, columnDefs.join(', '), pkSql);
this.runSql(sql, callback);
},
renameTable: function(tableName, newTableName, callback) {
var sql = util.format('RENAME TABLE %s TO %s', tableName, newTableName);
var sql = util.format('RENAME TABLE `%s` TO `%s`', tableName, newTableName);
this.runSql(sql, callback);
},
addColumn: function(tableName, columnName, columnSpec, callback) {
var def = this.createColumnDef(columnName, this.normalizeColumnSpec(columnSpec));
var sql = util.format('ALTER TABLE `%s` ADD COLUMN %s', tableName, def);
this.runSql(sql, callback);
},
removeColumn: function(tableName, columnName, callback) {
var sql = util.format('ALTER TABLE %s DROP COLUMN %s', tableName, columnName);
var sql = util.format('ALTER TABLE `%s` DROP COLUMN `%s`', tableName, columnName);
this.runSql(sql, callback);
},
addIndex: function(tableName, indexName, columns, unique, callback) {
if (typeof(unique) === 'function') {
callback = unique;
unique = false;
}
if (!Array.isArray(columns)) {
columns = [columns];
}
var sql = util.format('CREATE %s INDEX `%s` ON `%s` (`%s`)', (unique ? 'UNIQUE' : ''), indexName, tableName, columns.join('`, `'));
this.runSql(sql, callback);
},
insert: function(tableName, columnNameArray, valueArray, callback) {
if (columnNameArray.length !== valueArray.length) {
return callback(new Error('The number of columns does not match the number of values.'));
}
var sql = util.format('INSERT INTO `%s` ', tableName);
var columnNames = '(';
var values = 'VALUES (';
for (var index in columnNameArray) {
columnNames += '`' + columnNameArray[index] + '`';
if (typeof(valueArray[index]) === 'string') {
values += "'" + valueArray[index].replace("'", "''") + "'";
} else {
values += valueArray[index];
}
if (index != columnNameArray.length - 1) {
columnNames += ",";
values += ",";
}
}
sql += columnNames + ') '+ values + ');';
this.runSql(sql, callback);
},
removeIndex: function(tableName, indexName, callback) {

@@ -123,3 +217,3 @@ // tableName is optional for other drivers, but required for mySql. So, check the args to ensure they are valid

var sql = util.format('DROP INDEX %s ON %s', indexName, tableName);
var sql = util.format('DROP INDEX `%s` ON `%s`', indexName, tableName);
this.runSql(sql, callback);

@@ -132,3 +226,3 @@ },

var columnType = result[0].COLUMN_TYPE;
var alterSql = util.format("ALTER TABLE %s CHANGE %s %s %s", tableName, oldColumnName, newColumnName, columnType);
var alterSql = util.format("ALTER TABLE `%s` CHANGE `%s` `%s` %s", tableName, oldColumnName, newColumnName, columnType);
self.runSql(alterSql, callback);

@@ -140,3 +234,3 @@ });

var constraint = this.createColumnDef(columnName, columnSpec);
var sql = util.format('ALTER TABLE %s CHANGE COLUMN %s %s', tableName, columnName, constraint);
var sql = util.format('ALTER TABLE `%s` CHANGE COLUMN `%s` %s', tableName, columnName, constraint);
this.runSql(sql, callback);

@@ -147,3 +241,3 @@ },

var formattedDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
this.runSql('INSERT INTO migrations (name, run_on) VALUES (?, ?)', [name, formattedDate], callback);
this.runSql('INSERT INTO migrations (`name`, `run_on`) VALUES (?, ?)', [name, formattedDate], callback);
},

@@ -150,0 +244,0 @@

2

package.json

@@ -14,3 +14,3 @@ {

],
"version": "0.5.3",
"version": "0.5.4",
"engines": {

@@ -17,0 +17,0 @@ "node": ">=0.6.0"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc