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

Commit db45f14f by Jason Jung Committed by Matt Broadstone

added resolve / reject on connect

1 parent 0116710a
......@@ -182,6 +182,7 @@ ConnectionManager.prototype.initPools = function () {
ConnectionManager.prototype.getConnection = function(options) {
var self = this;
options = options || {};
self.pool.isTransaction = options.transaction;
return new Promise(function (resolve, reject) {
self.pool.acquire(function(err, connection) {
......@@ -200,7 +201,7 @@ ConnectionManager.prototype.releaseConnection = function(connection) {
};
ConnectionManager.prototype.$connect = function(config) {
return this.dialect.connectionManager.connect(config);
return this.dialect.connectionManager.connect(config, this.pool.isTransaction);
};
ConnectionManager.prototype.$disconnect = function(connection) {
return this.dialect.connectionManager.disconnect(connection);
......
......@@ -13,13 +13,13 @@ ConnectionManager = function(dialect, sequelize) {
try {
this.lib = require(sequelize.config.dialectModulePath || 'mssql');
} catch (err) {
throw new Error('Please install seriate package manually');
throw new Error('Please install mssql package manually');
}
};
Utils._.extend(ConnectionManager.prototype, AbstractConnectionManager.prototype);
ConnectionManager.prototype.connect = function(config) {
ConnectionManager.prototype.connect = function(config, isTransaction) {
var self = this;
return new Promise(function (resolve, reject) {
......@@ -43,13 +43,38 @@ ConnectionManager.prototype.connect = function(config) {
server: connectionConfig.host,
database: connectionConfig.database
};
if (isTransaction) {
var conn = new self.lib.Connection(config, function (err){
var trans = new self.lib.Transaction(conn);
self.lib._transaction = trans;
trans.begin(function(err) {
if (err) {
reject(err);
return;
}
resolve(self.lib);
});
});
} else {
self.lib.connect(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) {
reject(err);
return;
}
resolve(self.lib);
});
}
// var connection = {
// config: {
// user: connectionConfig.user,
......@@ -60,7 +85,7 @@ ConnectionManager.prototype.connect = function(config) {
// };
//connection = self.lib;
// connection.lib = self.lib.getPlainContext(connection.config);
resolve(self.lib);
});
};
ConnectionManager.prototype.disconnect = function(connection) {
......
......@@ -472,7 +472,8 @@ module.exports = (function() {
//return 'SAVE TRANSACTION ' + SqlGenerator.quoteIdentifier(transaction.name) + ';';
}
return 'BEGIN TRANSACTION';
// return 'BEGIN TRANSACTION';
return '';
},
/**
* Returns a query that commits a transaction.
......@@ -486,6 +487,7 @@ module.exports = (function() {
}
return 'COMMIT TRANSACTION;';
// return '';
},
/**
......@@ -500,7 +502,8 @@ module.exports = (function() {
return 'ROLLBACK TRANSACTION ' + this.quoteIdentifier(transaction.name) + ';';
}
return 'ROLLBACK TRANSACTION';
return 'ROLLBACK TRANSACTION;';
// return '';
},
addLimitAndOffset: function(options, query) {
......
......@@ -36,6 +36,7 @@ module.exports = (function() {
}
var promise = new Utils.Promise(function(resolve, reject) {
console.log(self.sql);
// self
......@@ -52,15 +53,42 @@ module.exports = (function() {
// resolve(self.formatResults(result.query));
// });
// });
var request = new self.connection.Request();
var request, transCommand;
if (self.connection._transaction) {
request = new self.connection.Request(self.connection._transaction);
if (self.sql === 'COMMIT TRANSACTION;') {
transCommand = 'commit';
} else if (self.sql === 'ROLLBACK TRANSACTION;') {
transCommand = 'rollback';
}
if (self.sql === 'COMMIT TRANSACTION;' ||
self.sql === 'ROLLBACK TRANSACTION;') {
self.connection._transaction[transCommand](function (err, result) {
if (err) {
console.log(err.message);
reject(self.formatError(err));
} else {
resolve(self.formatResults(result));
}
});
return promise;
}
} else {
request = new self.connection.Request();
}
request.query(self.sql, function(err, recordset) {
promise.emit('sql', self.sql, self.connection.uuid);
if(err){
console.log(err.message);
reject(self.formatError(err));
}
} else {
resolve(self.formatResults(recordset));
}
});
});
return promise;
......
'use strict';
var Utils = require('./utils')
, util = require('util');
, util = require('util')
, Promise = require('./promise');
/**
* The transaction object is used to identify a running transaction. It is created by calling `Sequelize.transaction()`.
......@@ -114,11 +115,12 @@ Transaction.prototype.prepareEnvironment = function() {
var self = this;
return Utils.Promise.resolve(
self.options.transaction ? self.options.transaction.connection : self.sequelize.connectionManager.getConnection({ uuid: self.id })
self.options.transaction ? self.options.transaction.connection : self.sequelize.connectionManager.getConnection({ uuid: self.id, transaction: true })
).then(function (connection) {
self.connection = connection;
self.connection.uuid = self.id;
}).then(function () {
})
.then(function () {
return self.begin();
}).then(function () {
return self.setIsolationLevel();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!