不要怂,就是干,撸起袖子干!

Commit cada814f by Joel Trost Committed by Matt Broadstone

Commit for fetch

1 parent 07257ee3
...@@ -40,7 +40,6 @@ ConnectionManager.prototype.connect = function(config) { ...@@ -40,7 +40,6 @@ ConnectionManager.prototype.connect = function(config) {
} }
if(!self.connection){ if(!self.connection){
//console.log('CONNECTION MADE', self.connection);
config = { config = {
user: connectionConfig.user, user: connectionConfig.user,
password: connectionConfig.password, password: connectionConfig.password,
...@@ -59,12 +58,6 @@ ConnectionManager.prototype.connect = function(config) { ...@@ -59,12 +58,6 @@ ConnectionManager.prototype.connect = function(config) {
self.lib._transaction = null; self.lib._transaction = null;
var conn = new self.lib.Connection(config, function(err) { var conn = new self.lib.Connection(config, function(err) {
// var request = new self.lib.Request();
// request.query('select 1 as number', function(err, recordset) {
// console.log('err2', err);
// console.log(recordset);
// });
if (err) { if (err) {
reject(err); reject(err);
return; return;
...@@ -76,18 +69,6 @@ ConnectionManager.prototype.connect = function(config) { ...@@ -76,18 +69,6 @@ ConnectionManager.prototype.connect = function(config) {
}else{ }else{
resolve(self.connection); resolve(self.connection);
} }
//console.log(self.connection);
// var connection = {
// config: {
// user: connectionConfig.user,
// password: connectionConfig.password,
// server: connectionConfig.host,
// database: connectionConfig.database
// },
// };
//connection = self.lib;
// connection.lib = self.lib.getPlainContext(connection.config);
}); });
}; };
ConnectionManager.prototype.getConnection = function(options) { ConnectionManager.prototype.getConnection = function(options) {
......
...@@ -202,7 +202,6 @@ module.exports = (function() { ...@@ -202,7 +202,6 @@ module.exports = (function() {
*/ */
/* istanbul ignore next */ /* istanbul ignore next */
deleteQuery: function(tableName, where, options) { deleteQuery: function(tableName, where, options) {
console.log('where:', where);
var query = SqlGenerator.deleteSql(tableName, where); var query = SqlGenerator.deleteSql(tableName, where);
...@@ -474,8 +473,8 @@ module.exports = (function() { ...@@ -474,8 +473,8 @@ module.exports = (function() {
return ''; return '';
//return 'SAVE TRANSACTION ' + SqlGenerator.quoteIdentifier(transaction.name) + ';'; //return 'SAVE TRANSACTION ' + SqlGenerator.quoteIdentifier(transaction.name) + ';';
} }
// return 'BEGIN TRANSACTION'; return 'BEGIN TRANSACTION';
return ''; //return '';
}, },
/** /**
* Returns a query that commits a transaction. * Returns a query that commits a transaction.
......
...@@ -40,9 +40,20 @@ module.exports = (function() { ...@@ -40,9 +40,20 @@ module.exports = (function() {
return promise; return promise;
} }
if(self.sql === 'BEGIN TRANSACTION'){
var trans = new self.connection.lib.Transaction(self.connection.context);
trans.begin(function(err){
if (err) {
console.log(err.message);
reject(self.formatError(err));
}else{
self.connection.lib._transaction = trans;
resolve();
}
});
} else{
var request, transCommand; var request, transCommand;
if (self.connection.lib._transaction) { if (self.connection.lib._transaction && self.connection.uuid) {
request = new self.connection.lib.Request(self.connection.lib._transaction); request = new self.connection.lib.Request(self.connection.lib._transaction);
if (self.sql === 'COMMIT TRANSACTION;') { if (self.sql === 'COMMIT TRANSACTION;') {
...@@ -69,6 +80,9 @@ module.exports = (function() { ...@@ -69,6 +80,9 @@ module.exports = (function() {
} }
request.query(self.sql, function(err, recordset) { request.query(self.sql, function(err, recordset) {
if(promise){
promise.emit('sql', self.sql, self.connection.uuid);
}
if(err){ if(err){
console.log(err.message); console.log(err.message);
reject(self.formatError(err)); reject(self.formatError(err));
...@@ -76,6 +90,7 @@ module.exports = (function() { ...@@ -76,6 +90,7 @@ module.exports = (function() {
resolve(self.formatResults(recordset)); resolve(self.formatResults(recordset));
} }
}); });
}
}); });
return promise; return promise;
...@@ -100,7 +115,6 @@ module.exports = (function() { ...@@ -100,7 +115,6 @@ module.exports = (function() {
Query.prototype.formatResults = function(data) { Query.prototype.formatResults = function(data) {
var result = this.callee; var result = this.callee;
//console.log(data); //console.log(data);
if(data){
if (this.isInsertQuery(data)) { if (this.isInsertQuery(data)) {
this.handleInsertQuery(data); this.handleInsertQuery(data);
} else if (this.isShowTableQuery()) { } else if (this.isShowTableQuery()) {
...@@ -128,9 +142,7 @@ module.exports = (function() { ...@@ -128,9 +142,7 @@ module.exports = (function() {
} else if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) { } else if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {
result = data.affectedRows; result = data.affectedRows;
} }
}else{
result = null;
}
return result; return result;
}; };
...@@ -220,6 +232,7 @@ module.exports = (function() { ...@@ -220,6 +232,7 @@ module.exports = (function() {
, id = null; , id = null;
id = id || (results && results[0][this.getInsertIdField()]); id = id || (results && results[0][this.getInsertIdField()]);
id = id || (metaData && metaData[this.getInsertIdField()]); id = id || (metaData && metaData[this.getInsertIdField()]);
id = id || (results && results[0][autoIncrementField]);
this.callee[autoIncrementField] = id; this.callee[autoIncrementField] = id;
} }
}; };
......
...@@ -4,7 +4,7 @@ var Utils = require('../../utils') ...@@ -4,7 +4,7 @@ var Utils = require('../../utils')
, SqlString = require('../../sql-string') , SqlString = require('../../sql-string')
, DataTypes = require('./data-types') , DataTypes = require('./data-types')
, _options , _options
, _dialect , _dialect = 'mssql'
, _sequelize; , _sequelize;
/* /*
...@@ -82,12 +82,37 @@ function fieldsToSql(fields, singleQuote){ ...@@ -82,12 +82,37 @@ function fieldsToSql(fields, singleQuote){
} }
return ''; return '';
} }
function processValue(val, modelAttribute){
var sql;
if(val instanceof Utils.cast){
sql = 'CAST(';
if(val.val._isSequelizeMethod){
sql += processValue(val.val, modelAttribute) + ' AS ' + val.type.toUpperCase();
}else{
sql += escape(val.val) + ' AS ' + val.type.toUpperCase();
}
return sql + ')';
} else if(val instanceof Utils.literal){
return val.val;
} else if (val instanceof Utils.fn) {
sql = val.fn + '(' + val.args.map(function(arg) {
if (arg._isSequelizeMethod) {
return processValue(arg, modelAttribute);
} else {
return escape(arg);
}
}).join(', ') + ')';
return sql;
} else{
return escape(val, modelAttribute);
}
}
function valuesToSql(fields, modelAttributeMap){ function valuesToSql(fields, modelAttributeMap){
var values = []; var values = [];
for (var key in fields) { for (var key in fields) {
if (fields.hasOwnProperty(key)) { if (fields.hasOwnProperty(key)) {
var value = fields[key]; values.push(processValue(fields[key], (modelAttributeMap && modelAttributeMap[key]) || undefined));
values.push(escape(value, (modelAttributeMap && modelAttributeMap[key]) || undefined));
} }
} }
if(values){ if(values){
...@@ -105,6 +130,13 @@ function loadColumn(attributes){ ...@@ -105,6 +130,13 @@ function loadColumn(attributes){
} }
return attrStr; return attrStr;
} }
function identityInsertWrapper(query, table){
return[
'SET IDENTITY_INSERT', quoteIdentifier(table), 'ON;',
query,
'SET IDENTITY_INSERT', quoteIdentifier(table), 'OFF;',
].join(' ');
}
function addTableExistsWrapper(query, exists){ function addTableExistsWrapper(query, exists){
return [ return [
"IF (", "IF (",
...@@ -250,11 +282,14 @@ module.exports = { ...@@ -250,11 +282,14 @@ module.exports = {
var selFields = []; var selFields = [];
var insertKey = false; var insertKey = false;
for (var key in valueHash) { for (var key in modelAttributeMap) {
selFields.push('INSERTED.' + quoteIdentifier(key)); selFields.push('INSERTED.' + quoteIdentifier(key));
if(modelAttributeMap[key].autoIncrement){ if(modelAttributeMap[key].autoIncrement
insertKey = true; && (valueHash[key] === 'DEFAULT'
|| valueHash[key] === null)){
delete valueHash[key]; delete valueHash[key];
}else if(modelAttributeMap[key].autoIncrement){
insertKey = true;
} }
} }
...@@ -267,9 +302,9 @@ module.exports = { ...@@ -267,9 +302,9 @@ module.exports = {
query = (replacements.attributes.length ? valueQuery : emptyQuery) + ';'; query = (replacements.attributes.length ? valueQuery : emptyQuery) + ';';
// if(insertKey){ if(insertKey){
// query = identityInsertOnWrapper(query); query = identityInsertWrapper(query, tableName);
// } }
return Utils._.template(query)(replacements); return Utils._.template(query)(replacements);
}, },
updateSql: function(tableName, valueHash, where, options, attributes){ updateSql: function(tableName, valueHash, where, options, attributes){
...@@ -632,8 +667,6 @@ module.exports = { ...@@ -632,8 +667,6 @@ module.exports = {
} else { } else {
query.push(quoteIdentifier(key)); query.push(quoteIdentifier(key));
} }
console.log('where', where);
console.log('here', val);
query.push(operator); query.push(operator);
if(!val){ if(!val){
query.push('NULL'); query.push('NULL');
......
...@@ -76,7 +76,7 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) { ...@@ -76,7 +76,7 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) {
} }
} }
if (dialect === 'postgres' || dialect === 'sqlite') { if (dialect === 'postgres' || dialect === 'sqlite' || dialect === 'mssql') {
// http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS // http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS
// http://stackoverflow.com/q/603572/130598 // http://stackoverflow.com/q/603572/130598
val = val.replace(/'/g, "''"); val = val.replace(/'/g, "''");
......
...@@ -377,7 +377,7 @@ describe(Support.getTestDialectTeaser("Model"), function () { ...@@ -377,7 +377,7 @@ describe(Support.getTestDialectTeaser("Model"), function () {
}) })
}) })
it('is possible to use funtions when creating an instance', function (done) { it('is possible to use functions when creating an instance', function (done) {
var self = this var self = this
this.User.create({ this.User.create({
secretValue: this.sequelize.fn('upper', 'sequelize') secretValue: this.sequelize.fn('upper', 'sequelize')
...@@ -665,7 +665,7 @@ describe(Support.getTestDialectTeaser("Model"), function () { ...@@ -665,7 +665,7 @@ describe(Support.getTestDialectTeaser("Model"), function () {
}) })
}) })
it('should only store the values passed in the whitelist', function(done) { it.only('should only store the values passed in the whitelist', function(done) {
var self = this var self = this
, data = { username: 'Peter', secretValue: '42' } , data = { username: 'Peter', secretValue: '42' }
...@@ -727,7 +727,7 @@ describe(Support.getTestDialectTeaser("Model"), function () { ...@@ -727,7 +727,7 @@ describe(Support.getTestDialectTeaser("Model"), function () {
}) })
}) })
it('saves data with single quote', function(done) { it.only('saves data with single quote', function(done) {
var quote = "single'quote" var quote = "single'quote"
, self = this , self = this
...@@ -1039,7 +1039,7 @@ describe(Support.getTestDialectTeaser("Model"), function () { ...@@ -1039,7 +1039,7 @@ describe(Support.getTestDialectTeaser("Model"), function () {
}) })
}) })
it('saves data with single quote', function(done) { it.only('saves data with single quote', function(done) {
var self = this var self = this
, quote = "Single'Quote" , quote = "Single'Quote"
, data = [{ username: 'Peter', data: quote}, , data = [{ username: 'Peter', data: quote},
......
...@@ -99,7 +99,7 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () { ...@@ -99,7 +99,7 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () {
self.queryInterface.showIndex('Group').complete(function(err, indexes) { self.queryInterface.showIndex('Group').complete(function(err, indexes) {
expect(err).to.be.null expect(err).to.be.null
console.log(indexes);
indexColumns = _.uniq(indexes.map(function(index) { return index.name })) indexColumns = _.uniq(indexes.map(function(index) { return index.name }))
expect(indexColumns).to.be.empty expect(indexColumns).to.be.empty
......
...@@ -26,7 +26,7 @@ var qq = function(str) { ...@@ -26,7 +26,7 @@ var qq = function(str) {
} }
} }
describe.only(Support.getTestDialectTeaser("Sequelize"), function () { describe(Support.getTestDialectTeaser("Sequelize"), function () {
describe('constructor', function() { describe('constructor', function() {
//MSSQL already pools, this test is not relevent //MSSQL already pools, this test is not relevent
if (dialect !== 'sqlite' && dialect !== 'mssql') { if (dialect !== 'sqlite' && dialect !== 'mssql') {
...@@ -120,6 +120,8 @@ describe.only(Support.getTestDialectTeaser("Sequelize"), function () { ...@@ -120,6 +120,8 @@ describe.only(Support.getTestDialectTeaser("Sequelize"), function () {
err.message.match(/connect ECONNREFUSED/) || err.message.match(/connect ECONNREFUSED/) ||
err.message.match(/invalid port number/) err.message.match(/invalid port number/)
).to.be.ok ).to.be.ok
} else if (dialect === 'mssql'){
expect(err.message.match(/ConnectionError: Login failed for user/)).to.be.ok
} else { } else {
expect(err.message).to.match(/connect ECONNREFUSED/) expect(err.message).to.match(/connect ECONNREFUSED/)
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!