mysql2-core 0.2.4 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/build.js +1 -1
- package/lib/index.js +656 -125
- package/package.json +1 -1
- package/src/build.ts +2 -2
- package/src/index.ts +490 -71
- package/src/metadata.ts +10 -46
package/lib/index.js
CHANGED
|
@@ -67,28 +67,101 @@ function createPool(conf) {
|
|
|
67
67
|
return pool;
|
|
68
68
|
}
|
|
69
69
|
exports.createPool = createPool;
|
|
70
|
+
function getConnection(pool) {
|
|
71
|
+
return new Promise(function (resolve, reject) {
|
|
72
|
+
pool.getConnection(function (err, connection) {
|
|
73
|
+
if (err) {
|
|
74
|
+
return reject(err);
|
|
75
|
+
}
|
|
76
|
+
return resolve(connection);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
exports.getConnection = getConnection;
|
|
81
|
+
function beginTransaction(connection, rollbackIfError) {
|
|
82
|
+
return new Promise(function (resolve, reject) {
|
|
83
|
+
connection.beginTransaction(function (err) {
|
|
84
|
+
if (err) {
|
|
85
|
+
if (!rollbackIfError) {
|
|
86
|
+
return reject(err);
|
|
87
|
+
}
|
|
88
|
+
connection.rollback(function () {
|
|
89
|
+
return reject(err);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return resolve();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
exports.beginTransaction = beginTransaction;
|
|
97
|
+
function commit(connection, rollbackIfError) {
|
|
98
|
+
return new Promise(function (resolve, reject) {
|
|
99
|
+
connection.commit(function (err) {
|
|
100
|
+
if (err) {
|
|
101
|
+
if (!rollbackIfError) {
|
|
102
|
+
return reject(err);
|
|
103
|
+
}
|
|
104
|
+
connection.rollback(function () {
|
|
105
|
+
return reject(err);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
resolve();
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
exports.commit = commit;
|
|
113
|
+
function rollback(connection) {
|
|
114
|
+
return new Promise(function (resolve, reject) {
|
|
115
|
+
connection.rollback(function (err) {
|
|
116
|
+
if (err) {
|
|
117
|
+
return reject(err);
|
|
118
|
+
}
|
|
119
|
+
resolve();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
exports.rollback = rollback;
|
|
70
124
|
var PoolManager = (function () {
|
|
71
125
|
function PoolManager(pool) {
|
|
72
126
|
this.pool = pool;
|
|
73
127
|
this.driver = "mysql";
|
|
74
128
|
this.param = this.param.bind(this);
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
129
|
+
this.execute = this.execute.bind(this);
|
|
130
|
+
this.executeBatch = this.executeBatch.bind(this);
|
|
77
131
|
this.query = this.query.bind(this);
|
|
78
132
|
this.queryOne = this.queryOne.bind(this);
|
|
79
|
-
this.
|
|
133
|
+
this.executeScalar = this.executeScalar.bind(this);
|
|
80
134
|
this.count = this.count.bind(this);
|
|
81
135
|
}
|
|
82
136
|
PoolManager.prototype.param = function (i) {
|
|
83
137
|
return "?";
|
|
84
138
|
};
|
|
85
|
-
PoolManager.prototype.
|
|
139
|
+
PoolManager.prototype.beginTransaction = function () {
|
|
140
|
+
var _this = this;
|
|
141
|
+
return new Promise(function (resolve, reject) {
|
|
142
|
+
_this.pool.getConnection(function (er0, connection) {
|
|
143
|
+
if (er0) {
|
|
144
|
+
return reject(er0);
|
|
145
|
+
}
|
|
146
|
+
connection.beginTransaction(function (er1) {
|
|
147
|
+
if (er1) {
|
|
148
|
+
connection.rollback(function () {
|
|
149
|
+
return reject(er1);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
var tx = new PoolConnectionManager(connection);
|
|
153
|
+
return resolve(tx);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
PoolManager.prototype.execute = function (sql, args, ctx) {
|
|
86
159
|
var p = ctx ? ctx : this.pool;
|
|
87
|
-
return
|
|
160
|
+
return execute(p, sql, args);
|
|
88
161
|
};
|
|
89
|
-
PoolManager.prototype.
|
|
162
|
+
PoolManager.prototype.executeBatch = function (statements, firstSuccess, ctx) {
|
|
90
163
|
var p = ctx ? ctx : this.pool;
|
|
91
|
-
return
|
|
164
|
+
return executeBatch(p, statements, firstSuccess);
|
|
92
165
|
};
|
|
93
166
|
PoolManager.prototype.query = function (sql, args, m, bools, ctx) {
|
|
94
167
|
var p = ctx ? ctx : this.pool;
|
|
@@ -98,9 +171,9 @@ var PoolManager = (function () {
|
|
|
98
171
|
var p = ctx ? ctx : this.pool;
|
|
99
172
|
return queryOne(p, sql, args, m, bools);
|
|
100
173
|
};
|
|
101
|
-
PoolManager.prototype.
|
|
174
|
+
PoolManager.prototype.executeScalar = function (sql, args, ctx) {
|
|
102
175
|
var p = ctx ? ctx : this.pool;
|
|
103
|
-
return
|
|
176
|
+
return executeScalar(p, sql, args);
|
|
104
177
|
};
|
|
105
178
|
PoolManager.prototype.count = function (sql, args, ctx) {
|
|
106
179
|
var p = ctx ? ctx : this.pool;
|
|
@@ -109,135 +182,593 @@ var PoolManager = (function () {
|
|
|
109
182
|
return PoolManager;
|
|
110
183
|
}());
|
|
111
184
|
exports.PoolManager = PoolManager;
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
185
|
+
var PoolConnectionManager = (function () {
|
|
186
|
+
function PoolConnectionManager(connection) {
|
|
187
|
+
this.connection = connection;
|
|
188
|
+
this.driver = "mysql";
|
|
189
|
+
this.param = this.param.bind(this);
|
|
190
|
+
this.execute = this.execute.bind(this);
|
|
191
|
+
this.executeBatch = this.executeBatch.bind(this);
|
|
192
|
+
this.query = this.query.bind(this);
|
|
193
|
+
this.queryOne = this.queryOne.bind(this);
|
|
194
|
+
this.executeScalar = this.executeScalar.bind(this);
|
|
195
|
+
this.count = this.count.bind(this);
|
|
118
196
|
}
|
|
119
|
-
|
|
197
|
+
PoolConnectionManager.prototype.param = function (i) {
|
|
198
|
+
return "?";
|
|
199
|
+
};
|
|
200
|
+
PoolConnectionManager.prototype.commit = function () {
|
|
201
|
+
var _this = this;
|
|
120
202
|
return new Promise(function (resolve, reject) {
|
|
121
|
-
|
|
122
|
-
if (
|
|
123
|
-
return reject(
|
|
203
|
+
_this.connection.commit(function (er3) {
|
|
204
|
+
if (er3) {
|
|
205
|
+
return reject(er3);
|
|
124
206
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
207
|
+
return resolve();
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
PoolConnectionManager.prototype.rollback = function () {
|
|
212
|
+
var _this = this;
|
|
213
|
+
return new Promise(function (resolve, reject) {
|
|
214
|
+
_this.connection.rollback(function (er3) {
|
|
215
|
+
if (er3) {
|
|
216
|
+
return reject(er3);
|
|
217
|
+
}
|
|
218
|
+
return resolve();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
PoolConnectionManager.prototype.execute = function (sql, args, ctx) {
|
|
223
|
+
var p = ctx ? ctx : this.connection;
|
|
224
|
+
return execute(p, sql, args);
|
|
225
|
+
};
|
|
226
|
+
PoolConnectionManager.prototype.executeBatch = function (statements, firstSuccess, ctx) {
|
|
227
|
+
var p = ctx ? ctx : this.connection;
|
|
228
|
+
return executeBatchConnection(p, statements, firstSuccess);
|
|
229
|
+
};
|
|
230
|
+
PoolConnectionManager.prototype.query = function (sql, args, m, bools, ctx) {
|
|
231
|
+
var p = ctx ? ctx : this.connection;
|
|
232
|
+
return query(p, sql, args, m, bools);
|
|
233
|
+
};
|
|
234
|
+
PoolConnectionManager.prototype.queryOne = function (sql, args, m, bools, ctx) {
|
|
235
|
+
var p = ctx ? ctx : this.connection;
|
|
236
|
+
return queryOne(p, sql, args, m, bools);
|
|
237
|
+
};
|
|
238
|
+
PoolConnectionManager.prototype.executeScalar = function (sql, args, ctx) {
|
|
239
|
+
var p = ctx ? ctx : this.connection;
|
|
240
|
+
return executeScalar(p, sql, args);
|
|
241
|
+
};
|
|
242
|
+
PoolConnectionManager.prototype.count = function (sql, args, ctx) {
|
|
243
|
+
var p = ctx ? ctx : this.connection;
|
|
244
|
+
return count(p, sql, args);
|
|
245
|
+
};
|
|
246
|
+
return PoolConnectionManager;
|
|
247
|
+
}());
|
|
248
|
+
exports.PoolConnectionManager = PoolConnectionManager;
|
|
249
|
+
function executeBatch(pool, statements, firstSuccess) {
|
|
250
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
251
|
+
var connection;
|
|
252
|
+
return __generator(this, function (_a) {
|
|
253
|
+
switch (_a.label) {
|
|
254
|
+
case 0:
|
|
255
|
+
if (!statements || statements.length === 0) {
|
|
256
|
+
return [2, Promise.resolve(0)];
|
|
130
257
|
}
|
|
131
|
-
else {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
258
|
+
else if (statements.length === 1) {
|
|
259
|
+
return [2, execute(pool, statements[0].query, statements[0].params)];
|
|
260
|
+
}
|
|
261
|
+
if (!resource.multipleStatements) return [3, 1];
|
|
262
|
+
if (firstSuccess) {
|
|
263
|
+
return [2, new Promise(function (resolve, reject) {
|
|
264
|
+
pool.getConnection(function (er0, connection) {
|
|
265
|
+
if (er0) {
|
|
266
|
+
return reject(er0);
|
|
267
|
+
}
|
|
268
|
+
connection.beginTransaction(function (er1) {
|
|
269
|
+
if (er1) {
|
|
270
|
+
connection.rollback(function () {
|
|
271
|
+
return reject(er1);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
connection.execute(statements[0].query, toArray(statements[0].params), function (er2a, results0) {
|
|
276
|
+
if (er2a) {
|
|
277
|
+
connection.rollback(function () {
|
|
278
|
+
return reject(er2a);
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
if (results0 && results0.affectedRows === 0) {
|
|
283
|
+
connection.commit(function (er3) {
|
|
284
|
+
if (er3) {
|
|
285
|
+
connection.rollback(function () {
|
|
286
|
+
return reject(er3);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
return 0;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
var queries = [];
|
|
294
|
+
var params = [];
|
|
295
|
+
var l = statements.length;
|
|
296
|
+
for (var j = 1; j < l; j++) {
|
|
297
|
+
var item = statements[j];
|
|
298
|
+
if (item.query.endsWith(";")) {
|
|
299
|
+
queries.push(item.query);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
queries.push(item.query + ";");
|
|
303
|
+
}
|
|
304
|
+
if (item.params && item.params.length > 0) {
|
|
305
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
306
|
+
var p = _a[_i];
|
|
307
|
+
params.push(p);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
connection.query(queries.join(""), toArray(params), function (er2, results) {
|
|
312
|
+
if (er2) {
|
|
313
|
+
connection.rollback(function () {
|
|
314
|
+
return reject(er2);
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
connection.commit(function (er3) {
|
|
319
|
+
if (er3) {
|
|
320
|
+
connection.rollback(function () {
|
|
321
|
+
return reject(er3);
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
var c = 0;
|
|
326
|
+
c += results0.affectedRows + results.affectedRows;
|
|
327
|
+
return resolve(c);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
});
|
|
153
335
|
});
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
336
|
+
})];
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
return [2, new Promise(function (resolve, reject) {
|
|
340
|
+
pool.getConnection(function (er0, connection) {
|
|
341
|
+
if (er0) {
|
|
342
|
+
return reject(er0);
|
|
343
|
+
}
|
|
344
|
+
connection.beginTransaction(function (er1) {
|
|
345
|
+
if (er1) {
|
|
162
346
|
connection.rollback(function () {
|
|
163
|
-
return reject(
|
|
347
|
+
return reject(er1);
|
|
164
348
|
});
|
|
165
349
|
}
|
|
166
350
|
else {
|
|
167
|
-
|
|
168
|
-
|
|
351
|
+
var queries_1 = [];
|
|
352
|
+
var params_1 = [];
|
|
353
|
+
statements.forEach(function (item) {
|
|
354
|
+
if (item.query.endsWith(";")) {
|
|
355
|
+
queries_1.push(item.query);
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
queries_1.push(item.query + ";");
|
|
359
|
+
}
|
|
360
|
+
if (item.params && item.params.length > 0) {
|
|
361
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
362
|
+
var p = _a[_i];
|
|
363
|
+
params_1.push(p);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
connection.query(queries_1.join(""), toArray(params_1), function (er2, results) {
|
|
368
|
+
if (er2) {
|
|
169
369
|
connection.rollback(function () {
|
|
170
|
-
|
|
370
|
+
buildError(er2);
|
|
371
|
+
return reject(er2);
|
|
171
372
|
});
|
|
172
373
|
}
|
|
374
|
+
else {
|
|
375
|
+
connection.commit(function (er3) {
|
|
376
|
+
if (er3) {
|
|
377
|
+
connection.rollback(function () {
|
|
378
|
+
return reject(er3);
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
return resolve(results.affectedRows);
|
|
383
|
+
}
|
|
173
384
|
});
|
|
174
|
-
var c = 0;
|
|
175
|
-
c += results0.affectedRows + results.affectedRows;
|
|
176
|
-
return resolve(c);
|
|
177
385
|
}
|
|
178
386
|
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
});
|
|
387
|
+
});
|
|
388
|
+
})];
|
|
182
389
|
}
|
|
183
|
-
|
|
184
|
-
|
|
390
|
+
return [3, 3];
|
|
391
|
+
case 1: return [4, getConnection(pool)];
|
|
392
|
+
case 2:
|
|
393
|
+
connection = _a.sent();
|
|
394
|
+
return [2, executeBatchConnectionTx(connection, statements, firstSuccess)];
|
|
395
|
+
case 3: return [2];
|
|
396
|
+
}
|
|
185
397
|
});
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
exports.executeBatch = executeBatch;
|
|
401
|
+
function executeBatchConnectionTx(connection, statements, firstSuccess) {
|
|
402
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
403
|
+
var count_1, l, j, item, c, err_1, count_2, l, j, item, c, err_2;
|
|
404
|
+
return __generator(this, function (_a) {
|
|
405
|
+
switch (_a.label) {
|
|
406
|
+
case 0:
|
|
407
|
+
if (!statements || statements.length === 0) {
|
|
408
|
+
return [2, Promise.resolve(0)];
|
|
409
|
+
}
|
|
410
|
+
else if (statements.length === 1) {
|
|
411
|
+
return [2, execute(connection, statements[0].query, statements[0].params)];
|
|
412
|
+
}
|
|
413
|
+
if (!resource.multipleStatements) return [3, 1];
|
|
414
|
+
if (firstSuccess) {
|
|
415
|
+
return [2, new Promise(function (resolve, reject) {
|
|
416
|
+
connection.beginTransaction(function (er1) {
|
|
417
|
+
if (er1) {
|
|
418
|
+
connection.rollback(function () {
|
|
419
|
+
return reject(er1);
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
connection.execute(statements[0].query, toArray(statements[0].params), function (er2a, results0) {
|
|
424
|
+
if (er2a) {
|
|
425
|
+
connection.rollback(function () {
|
|
426
|
+
return reject(er2a);
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
if (results0 && results0.affectedRows === 0) {
|
|
431
|
+
connection.commit(function (er3) {
|
|
432
|
+
if (er3) {
|
|
433
|
+
connection.rollback(function () {
|
|
434
|
+
return reject(er3);
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
return 0;
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
var queries = [];
|
|
442
|
+
var params = [];
|
|
443
|
+
var l = statements.length;
|
|
444
|
+
for (var j = 1; j < l; j++) {
|
|
445
|
+
var item = statements[j];
|
|
446
|
+
if (item.query.endsWith(";")) {
|
|
447
|
+
queries.push(item.query);
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
queries.push(item.query + ";");
|
|
451
|
+
}
|
|
452
|
+
if (item.params && item.params.length > 0) {
|
|
453
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
454
|
+
var p = _a[_i];
|
|
455
|
+
params.push(p);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
connection.query(queries.join(""), toArray(params), function (er2, results) {
|
|
460
|
+
if (er2) {
|
|
461
|
+
connection.rollback(function () {
|
|
462
|
+
return reject(er2);
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
connection.commit(function (er3) {
|
|
467
|
+
if (er3) {
|
|
468
|
+
connection.rollback(function () {
|
|
469
|
+
return reject(er3);
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
var c = 0;
|
|
474
|
+
c += results0.affectedRows + results.affectedRows;
|
|
475
|
+
return resolve(c);
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
})];
|
|
198
484
|
}
|
|
199
485
|
else {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
486
|
+
return [2, new Promise(function (resolve, reject) {
|
|
487
|
+
connection.beginTransaction(function (er1) {
|
|
488
|
+
if (er1) {
|
|
489
|
+
connection.rollback(function () {
|
|
490
|
+
return reject(er1);
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
var queries_2 = [];
|
|
495
|
+
var params_2 = [];
|
|
496
|
+
statements.forEach(function (item) {
|
|
497
|
+
if (item.query.endsWith(";")) {
|
|
498
|
+
queries_2.push(item.query);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
queries_2.push(item.query + ";");
|
|
502
|
+
}
|
|
503
|
+
if (item.params && item.params.length > 0) {
|
|
504
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
505
|
+
var p = _a[_i];
|
|
506
|
+
params_2.push(p);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
connection.query(queries_2.join(""), toArray(params_2), function (er2, results) {
|
|
511
|
+
if (er2) {
|
|
512
|
+
connection.rollback(function () {
|
|
513
|
+
buildError(er2);
|
|
514
|
+
return reject(er2);
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
connection.commit(function (er3) {
|
|
519
|
+
if (er3) {
|
|
520
|
+
connection.rollback(function () {
|
|
521
|
+
return reject(er3);
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
});
|
|
525
|
+
return resolve(results.affectedRows);
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
214
529
|
});
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
530
|
+
})];
|
|
531
|
+
}
|
|
532
|
+
return [3, 18];
|
|
533
|
+
case 1:
|
|
534
|
+
if (!firstSuccess) return [3, 11];
|
|
535
|
+
_a.label = 2;
|
|
536
|
+
case 2:
|
|
537
|
+
_a.trys.push([2, 9, , 10]);
|
|
538
|
+
return [4, beginTransaction(connection, true)];
|
|
539
|
+
case 3:
|
|
540
|
+
_a.sent();
|
|
541
|
+
return [4, execute(connection, statements[0].query, toArray(statements[0].params))];
|
|
542
|
+
case 4:
|
|
543
|
+
count_1 = _a.sent();
|
|
544
|
+
if (count_1 === 0) {
|
|
545
|
+
commit(connection, true);
|
|
546
|
+
return [2, 0];
|
|
547
|
+
}
|
|
548
|
+
l = statements.length;
|
|
549
|
+
j = 1;
|
|
550
|
+
_a.label = 5;
|
|
551
|
+
case 5:
|
|
552
|
+
if (!(j < l)) return [3, 8];
|
|
553
|
+
item = statements[j];
|
|
554
|
+
return [4, execute(connection, item.query, toArray(item.params))];
|
|
555
|
+
case 6:
|
|
556
|
+
c = _a.sent();
|
|
557
|
+
count_1 = count_1 + c;
|
|
558
|
+
_a.label = 7;
|
|
559
|
+
case 7:
|
|
560
|
+
j++;
|
|
561
|
+
return [3, 5];
|
|
562
|
+
case 8:
|
|
563
|
+
commit(connection, true);
|
|
564
|
+
return [2, count_1];
|
|
565
|
+
case 9:
|
|
566
|
+
err_1 = _a.sent();
|
|
567
|
+
rollback(connection);
|
|
568
|
+
throw err_1;
|
|
569
|
+
case 10: return [3, 18];
|
|
570
|
+
case 11:
|
|
571
|
+
_a.trys.push([11, 17, , 18]);
|
|
572
|
+
return [4, beginTransaction(connection, true)];
|
|
573
|
+
case 12:
|
|
574
|
+
_a.sent();
|
|
575
|
+
count_2 = 0;
|
|
576
|
+
l = statements.length;
|
|
577
|
+
j = 0;
|
|
578
|
+
_a.label = 13;
|
|
579
|
+
case 13:
|
|
580
|
+
if (!(j < l)) return [3, 16];
|
|
581
|
+
item = statements[j];
|
|
582
|
+
return [4, execute(connection, item.query, toArray(item.params))];
|
|
583
|
+
case 14:
|
|
584
|
+
c = _a.sent();
|
|
585
|
+
count_2 = count_2 + c;
|
|
586
|
+
_a.label = 15;
|
|
587
|
+
case 15:
|
|
588
|
+
j++;
|
|
589
|
+
return [3, 13];
|
|
590
|
+
case 16:
|
|
591
|
+
commit(connection, true);
|
|
592
|
+
return [2, count_2];
|
|
593
|
+
case 17:
|
|
594
|
+
err_2 = _a.sent();
|
|
595
|
+
rollback(connection);
|
|
596
|
+
throw err_2;
|
|
597
|
+
case 18: return [2];
|
|
598
|
+
}
|
|
599
|
+
});
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
exports.executeBatchConnectionTx = executeBatchConnectionTx;
|
|
603
|
+
function executeBatchConnection(connection, statements, firstSuccess) {
|
|
604
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
605
|
+
var count_3, l, j, item, c, er1_1, er0_1, count_4, l, j, item, c, err_3;
|
|
606
|
+
return __generator(this, function (_a) {
|
|
607
|
+
switch (_a.label) {
|
|
608
|
+
case 0:
|
|
609
|
+
if (!statements || statements.length === 0) {
|
|
610
|
+
return [2, Promise.resolve(0)];
|
|
611
|
+
}
|
|
612
|
+
else if (statements.length === 1) {
|
|
613
|
+
return [2, execute(connection, statements[0].query, statements[0].params)];
|
|
614
|
+
}
|
|
615
|
+
if (!resource.multipleStatements) return [3, 1];
|
|
616
|
+
if (firstSuccess) {
|
|
617
|
+
return [2, new Promise(function (resolve, reject) {
|
|
618
|
+
connection.execute(statements[0].query, toArray(statements[0].params), function (er2a, results0) {
|
|
619
|
+
if (er2a) {
|
|
620
|
+
return reject(er2a);
|
|
621
|
+
}
|
|
622
|
+
else {
|
|
623
|
+
if (results0 && results0.affectedRows === 0) {
|
|
624
|
+
return 0;
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
var queries = [];
|
|
628
|
+
var params = [];
|
|
629
|
+
var l = statements.length;
|
|
630
|
+
for (var j = 1; j < l; j++) {
|
|
631
|
+
var item = statements[j];
|
|
632
|
+
if (item.query.endsWith(";")) {
|
|
633
|
+
queries.push(item.query);
|
|
634
|
+
}
|
|
635
|
+
else {
|
|
636
|
+
queries.push(item.query + ";");
|
|
637
|
+
}
|
|
638
|
+
if (item.params && item.params.length > 0) {
|
|
639
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
640
|
+
var p = _a[_i];
|
|
641
|
+
params.push(p);
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
connection.query(queries.join(""), toArray(params), function (er2, results) {
|
|
646
|
+
if (er2) {
|
|
647
|
+
return reject(er2);
|
|
648
|
+
}
|
|
649
|
+
else {
|
|
650
|
+
var c = 0;
|
|
651
|
+
c += results0.affectedRows + results.affectedRows;
|
|
652
|
+
return resolve(c);
|
|
653
|
+
}
|
|
654
|
+
});
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
});
|
|
658
|
+
})];
|
|
659
|
+
}
|
|
660
|
+
else {
|
|
661
|
+
return [2, new Promise(function (resolve, reject) {
|
|
662
|
+
var queries = [];
|
|
663
|
+
var params = [];
|
|
664
|
+
statements.forEach(function (item) {
|
|
665
|
+
if (item.query.endsWith(";")) {
|
|
666
|
+
queries.push(item.query);
|
|
667
|
+
}
|
|
668
|
+
else {
|
|
669
|
+
queries.push(item.query + ";");
|
|
670
|
+
}
|
|
671
|
+
if (item.params && item.params.length > 0) {
|
|
672
|
+
for (var _i = 0, _a = item.params; _i < _a.length; _i++) {
|
|
673
|
+
var p = _a[_i];
|
|
674
|
+
params.push(p);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
});
|
|
678
|
+
connection.query(queries.join(""), toArray(params), function (er2, results) {
|
|
679
|
+
if (er2) {
|
|
219
680
|
connection.rollback(function () {
|
|
220
|
-
|
|
681
|
+
buildError(er2);
|
|
682
|
+
return reject(er2);
|
|
221
683
|
});
|
|
222
684
|
}
|
|
685
|
+
else {
|
|
686
|
+
connection.commit(function (er3) {
|
|
687
|
+
if (er3) {
|
|
688
|
+
connection.rollback(function () {
|
|
689
|
+
return reject(er3);
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
});
|
|
693
|
+
return resolve(results.affectedRows);
|
|
694
|
+
}
|
|
223
695
|
});
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
});
|
|
696
|
+
})];
|
|
227
697
|
}
|
|
228
|
-
|
|
229
|
-
|
|
698
|
+
return [3, 20];
|
|
699
|
+
case 1:
|
|
700
|
+
if (!firstSuccess) return [3, 13];
|
|
701
|
+
_a.label = 2;
|
|
702
|
+
case 2:
|
|
703
|
+
_a.trys.push([2, 11, , 12]);
|
|
704
|
+
return [4, execute(connection, statements[0].query, toArray(statements[0].params))];
|
|
705
|
+
case 3:
|
|
706
|
+
count_3 = _a.sent();
|
|
707
|
+
if (count_3 === 0) {
|
|
708
|
+
return [2, 0];
|
|
709
|
+
}
|
|
710
|
+
l = statements.length;
|
|
711
|
+
_a.label = 4;
|
|
712
|
+
case 4:
|
|
713
|
+
_a.trys.push([4, 9, , 10]);
|
|
714
|
+
j = 1;
|
|
715
|
+
_a.label = 5;
|
|
716
|
+
case 5:
|
|
717
|
+
if (!(j < l)) return [3, 8];
|
|
718
|
+
item = statements[j];
|
|
719
|
+
return [4, execute(connection, item.query, toArray(item.params))];
|
|
720
|
+
case 6:
|
|
721
|
+
c = _a.sent();
|
|
722
|
+
count_3 = count_3 + c;
|
|
723
|
+
_a.label = 7;
|
|
724
|
+
case 7:
|
|
725
|
+
j++;
|
|
726
|
+
return [3, 5];
|
|
727
|
+
case 8: return [2, count_3];
|
|
728
|
+
case 9:
|
|
729
|
+
er1_1 = _a.sent();
|
|
730
|
+
throw er1_1;
|
|
731
|
+
case 10: return [3, 12];
|
|
732
|
+
case 11:
|
|
733
|
+
er0_1 = _a.sent();
|
|
734
|
+
throw er0_1;
|
|
735
|
+
case 12: return [3, 20];
|
|
736
|
+
case 13:
|
|
737
|
+
count_4 = 0;
|
|
738
|
+
l = statements.length;
|
|
739
|
+
_a.label = 14;
|
|
740
|
+
case 14:
|
|
741
|
+
_a.trys.push([14, 19, , 20]);
|
|
742
|
+
j = 0;
|
|
743
|
+
_a.label = 15;
|
|
744
|
+
case 15:
|
|
745
|
+
if (!(j < l)) return [3, 18];
|
|
746
|
+
item = statements[j];
|
|
747
|
+
return [4, execute(connection, item.query, toArray(item.params))];
|
|
748
|
+
case 16:
|
|
749
|
+
c = _a.sent();
|
|
750
|
+
count_4 = count_4 + c;
|
|
751
|
+
_a.label = 17;
|
|
752
|
+
case 17:
|
|
753
|
+
j++;
|
|
754
|
+
return [3, 15];
|
|
755
|
+
case 18: return [2, count_4];
|
|
756
|
+
case 19:
|
|
757
|
+
err_3 = _a.sent();
|
|
758
|
+
throw err_3;
|
|
759
|
+
case 20: return [2];
|
|
760
|
+
}
|
|
230
761
|
});
|
|
231
|
-
}
|
|
762
|
+
});
|
|
232
763
|
}
|
|
233
|
-
exports.
|
|
764
|
+
exports.executeBatchConnection = executeBatchConnection;
|
|
234
765
|
function buildError(err) {
|
|
235
766
|
if (err.errno === 1062 && err.code === "ER_DUP_ENTRY") {
|
|
236
767
|
err.error = "duplicate";
|
|
237
768
|
}
|
|
238
769
|
return err;
|
|
239
770
|
}
|
|
240
|
-
function
|
|
771
|
+
function execute(pool, sql, args) {
|
|
241
772
|
return __awaiter(this, void 0, void 0, function () {
|
|
242
773
|
var p;
|
|
243
774
|
return __generator(this, function (_a) {
|
|
@@ -256,7 +787,7 @@ function exec(pool, sql, args) {
|
|
|
256
787
|
});
|
|
257
788
|
});
|
|
258
789
|
}
|
|
259
|
-
exports.
|
|
790
|
+
exports.execute = execute;
|
|
260
791
|
function query(pool, sql, args, m, bools) {
|
|
261
792
|
return __awaiter(this, void 0, void 0, function () {
|
|
262
793
|
var p;
|
|
@@ -295,7 +826,7 @@ function queryOne(pool, sql, args, m, bools) {
|
|
|
295
826
|
});
|
|
296
827
|
}
|
|
297
828
|
exports.queryOne = queryOne;
|
|
298
|
-
function
|
|
829
|
+
function executeScalar(pool, sql, args) {
|
|
299
830
|
return queryOne(pool, sql, args).then(function (r) {
|
|
300
831
|
if (!r) {
|
|
301
832
|
return null;
|
|
@@ -306,21 +837,21 @@ function execScalar(pool, sql, args) {
|
|
|
306
837
|
}
|
|
307
838
|
});
|
|
308
839
|
}
|
|
309
|
-
exports.
|
|
840
|
+
exports.executeScalar = executeScalar;
|
|
310
841
|
function count(pool, sql, args) {
|
|
311
|
-
return
|
|
842
|
+
return executeScalar(pool, sql, args);
|
|
312
843
|
}
|
|
313
844
|
exports.count = count;
|
|
314
845
|
function save(pool, obj, table, attrs, ver, buildParam, i) {
|
|
315
846
|
var s = build_1.buildToSave(obj, table, attrs, ver, buildParam);
|
|
316
|
-
if (!s) {
|
|
847
|
+
if (!s.query) {
|
|
317
848
|
return Promise.resolve(-1);
|
|
318
849
|
}
|
|
319
850
|
if (typeof pool === "function") {
|
|
320
851
|
return pool(s.query, s.params);
|
|
321
852
|
}
|
|
322
853
|
else {
|
|
323
|
-
return
|
|
854
|
+
return execute(pool, s.query, s.params);
|
|
324
855
|
}
|
|
325
856
|
}
|
|
326
857
|
exports.save = save;
|
|
@@ -330,7 +861,7 @@ function saveBatch(pool, objs, table, attrs, ver, buildParam) {
|
|
|
330
861
|
return pool(s);
|
|
331
862
|
}
|
|
332
863
|
else {
|
|
333
|
-
return
|
|
864
|
+
return executeBatch(pool, s);
|
|
334
865
|
}
|
|
335
866
|
}
|
|
336
867
|
exports.saveBatch = saveBatch;
|
|
@@ -549,7 +1080,7 @@ var StringService = (function () {
|
|
|
549
1080
|
arr.push("(?)");
|
|
550
1081
|
}
|
|
551
1082
|
var s = "insert ignore into " + this.table + "(" + this.column + ")values" + arr.join(",");
|
|
552
|
-
return
|
|
1083
|
+
return execute(this.pool, s, values);
|
|
553
1084
|
};
|
|
554
1085
|
return StringService;
|
|
555
1086
|
}());
|
|
@@ -574,7 +1105,7 @@ var MySQLWriter = (function () {
|
|
|
574
1105
|
this.oneIfSuccess = oneIfSuccess;
|
|
575
1106
|
this.write = this.write.bind(this);
|
|
576
1107
|
if (typeof pool === "function") {
|
|
577
|
-
this.
|
|
1108
|
+
this.execute = pool;
|
|
578
1109
|
}
|
|
579
1110
|
else {
|
|
580
1111
|
this.pool = pool;
|
|
@@ -596,20 +1127,20 @@ var MySQLWriter = (function () {
|
|
|
596
1127
|
}
|
|
597
1128
|
var stmt = build_1.buildToSave(obj2, this.table, this.attributes, this.version, this.param);
|
|
598
1129
|
if (stmt) {
|
|
599
|
-
if (this.
|
|
1130
|
+
if (this.execute) {
|
|
600
1131
|
if (this.oneIfSuccess) {
|
|
601
|
-
return this.
|
|
1132
|
+
return this.execute(stmt.query, stmt.params).then(function (ct) { return (ct > 0 ? 1 : 0); });
|
|
602
1133
|
}
|
|
603
1134
|
else {
|
|
604
|
-
return this.
|
|
1135
|
+
return this.execute(stmt.query, stmt.params);
|
|
605
1136
|
}
|
|
606
1137
|
}
|
|
607
1138
|
else {
|
|
608
1139
|
if (this.oneIfSuccess) {
|
|
609
|
-
return
|
|
1140
|
+
return execute(this.pool, stmt.query, stmt.params).then(function (ct) { return (ct > 0 ? 1 : 0); });
|
|
610
1141
|
}
|
|
611
1142
|
else {
|
|
612
|
-
return
|
|
1143
|
+
return execute(this.pool, stmt.query, stmt.params);
|
|
613
1144
|
}
|
|
614
1145
|
}
|
|
615
1146
|
}
|
|
@@ -629,7 +1160,7 @@ var MySQLStreamWriter = (function () {
|
|
|
629
1160
|
this.write = this.write.bind(this);
|
|
630
1161
|
this.flush = this.flush.bind(this);
|
|
631
1162
|
if (typeof pool === "function") {
|
|
632
|
-
this.
|
|
1163
|
+
this.executeBatch = pool;
|
|
633
1164
|
}
|
|
634
1165
|
else {
|
|
635
1166
|
this.pool = pool;
|
|
@@ -672,14 +1203,14 @@ var MySQLStreamWriter = (function () {
|
|
|
672
1203
|
var total_1 = this.list.length;
|
|
673
1204
|
var stmt = build_1.buildToSaveBatch(this.list, this.table, this.attributes, this.version, this.param);
|
|
674
1205
|
if (stmt) {
|
|
675
|
-
if (this.
|
|
676
|
-
return this.
|
|
1206
|
+
if (this.executeBatch) {
|
|
1207
|
+
return this.executeBatch(stmt).then(function (r) {
|
|
677
1208
|
_this.list = [];
|
|
678
1209
|
return total_1;
|
|
679
1210
|
});
|
|
680
1211
|
}
|
|
681
1212
|
else {
|
|
682
|
-
return
|
|
1213
|
+
return executeBatch(this.pool, stmt).then(function (r) {
|
|
683
1214
|
_this.list = [];
|
|
684
1215
|
return total_1;
|
|
685
1216
|
});
|
|
@@ -737,10 +1268,10 @@ var MySQLBatchWriter = (function () {
|
|
|
737
1268
|
}
|
|
738
1269
|
else {
|
|
739
1270
|
if (this.oneIfSuccess) {
|
|
740
|
-
return
|
|
1271
|
+
return executeBatch(this.pool, stmts).then(function (ct) { return stmts.length; });
|
|
741
1272
|
}
|
|
742
1273
|
else {
|
|
743
|
-
return
|
|
1274
|
+
return executeBatch(this.pool, stmts);
|
|
744
1275
|
}
|
|
745
1276
|
}
|
|
746
1277
|
}
|