transaction now returns a promise
This commit is contained in:
+11
-6
@@ -102,16 +102,20 @@ function query() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function transaction(queries, callback) {
|
function transaction(queries) {
|
||||||
assert(Array.isArray(queries));
|
assert(Array.isArray(queries));
|
||||||
assert.strictEqual(typeof callback, 'function');
|
|
||||||
|
|
||||||
callback = once(callback);
|
const args = Array.prototype.slice.call(arguments);
|
||||||
|
const callback = typeof args[args.length - 1] === 'function' ? once(args.pop()) : null;
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
gConnectionPool.getConnection(function (error, connection) {
|
gConnectionPool.getConnection(function (error, connection) {
|
||||||
if (error) return callback(error);
|
if (error) return callback ? callback(error) : reject(new BoxError(BoxError.DATABASE_ERROR, error, { code: error.code, sqlMessage: error.sqlMessage }));
|
||||||
|
|
||||||
const releaseConnection = (error) => { connection.release(); callback(error); };
|
const releaseConnection = (error) => {
|
||||||
|
connection.release();
|
||||||
|
callback ? callback(error) : reject(new BoxError(BoxError.DATABASE_ERROR, error, { code: error.code, sqlMessage: error.sqlMessage }));
|
||||||
|
};
|
||||||
|
|
||||||
connection.beginTransaction(function (error) {
|
connection.beginTransaction(function (error) {
|
||||||
if (error) return releaseConnection(error);
|
if (error) return releaseConnection(error);
|
||||||
@@ -126,7 +130,8 @@ function transaction(queries, callback) {
|
|||||||
|
|
||||||
connection.release();
|
connection.release();
|
||||||
|
|
||||||
callback(null, results);
|
callback ? callback(null, results) : resolve(results);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user