transaction now returns a promise

This commit is contained in:
Girish Ramakrishnan
2021-06-01 15:37:42 -07:00
parent e9ace613e2
commit bdbda9b80e
+11 -6
View File
@@ -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);
});
}); });
}); });
}); });