Skip to content

Commit b796b20

Browse files
authored
Merge pull request #1369 from yuxizhe/feat-pool-cluster
feat(poolCluster): add execute method
2 parents 772bbbd + 703a9e3 commit b796b20

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

lib/pool_cluster.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,32 @@ class PoolNamespace {
7777
return query;
7878
}
7979

80+
/**
81+
* pool cluster execute
82+
* @param {*} sql
83+
* @param {*} values
84+
* @param {*} cb
85+
*/
86+
execute(sql, values, cb) {
87+
if (typeof values === 'function') {
88+
cb = values;
89+
values = [];
90+
}
91+
this.getConnection((err, conn) => {
92+
if (err) {
93+
return cb(err);
94+
}
95+
try {
96+
conn.execute(sql, values, cb).once('end', () => {
97+
conn.release();
98+
});
99+
} catch (e) {
100+
conn.release();
101+
throw e;
102+
}
103+
});
104+
}
105+
80106
_getClusterNode() {
81107
const foundNodeIds = this._cluster._findNodeIds(this._pattern);
82108
if (foundNodeIds.length === 0) {

promise.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,20 @@ class PromisePoolCluster extends EventEmitter {
463463
});
464464
}
465465

466+
execute(sql, args) {
467+
const corePoolCluster = this.poolCluster;
468+
const localErr = new Error();
469+
if (typeof args === 'function') {
470+
throw new Error(
471+
'Callback function is not available with promise clients.'
472+
);
473+
}
474+
return new this.Promise((resolve, reject) => {
475+
const done = makeDoneCb(resolve, reject, localErr);
476+
corePoolCluster.execute(sql, args, done);
477+
});
478+
}
479+
466480
of(pattern, selector) {
467481
return new PromisePoolCluster(
468482
this.poolCluster.of(pattern, selector),

0 commit comments

Comments
 (0)