55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const PromisePoolConnection = require('./pool_connection');
|
|
const makeDoneCb = require('./make_done_cb');
|
|
|
|
class PromisePoolNamespace {
|
|
constructor(poolNamespace, thePromise) {
|
|
this.poolNamespace = poolNamespace;
|
|
this.Promise = thePromise || Promise;
|
|
}
|
|
|
|
getConnection() {
|
|
const corePoolNamespace = this.poolNamespace;
|
|
return new this.Promise((resolve, reject) => {
|
|
corePoolNamespace.getConnection((err, coreConnection) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(new PromisePoolConnection(coreConnection, this.Promise));
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
query(sql, values) {
|
|
const corePoolNamespace = this.poolNamespace;
|
|
const localErr = new Error();
|
|
if (typeof values === 'function') {
|
|
throw new Error(
|
|
'Callback function is not available with promise clients.'
|
|
);
|
|
}
|
|
return new this.Promise((resolve, reject) => {
|
|
const done = makeDoneCb(resolve, reject, localErr);
|
|
corePoolNamespace.query(sql, values, done);
|
|
});
|
|
}
|
|
|
|
execute(sql, values) {
|
|
const corePoolNamespace = this.poolNamespace;
|
|
const localErr = new Error();
|
|
if (typeof values === 'function') {
|
|
throw new Error(
|
|
'Callback function is not available with promise clients.'
|
|
);
|
|
}
|
|
return new this.Promise((resolve, reject) => {
|
|
const done = makeDoneCb(resolve, reject, localErr);
|
|
corePoolNamespace.execute(sql, values, done);
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = PromisePoolNamespace;
|