mysql2-core 0.2.3 → 0.3.0

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/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function (t) {
3
+ __assign = Object.assign || function(t) {
4
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
5
5
  s = arguments[i];
6
6
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -20,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  });
21
21
  };
22
22
  var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
@@ -67,235 +67,766 @@ 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
- this.driver = 'mysql';
127
+ this.driver = "mysql";
74
128
  this.param = this.param.bind(this);
75
- this.exec = this.exec.bind(this);
76
- this.execBatch = this.execBatch.bind(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.execScalar = this.execScalar.bind(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
- return '?';
137
+ return "?";
138
+ };
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
+ });
84
157
  };
85
- PoolManager.prototype.exec = function (sql, args, ctx) {
86
- var p = (ctx ? ctx : this.pool);
87
- return exec(p, sql, args);
158
+ PoolManager.prototype.execute = function (sql, args, ctx) {
159
+ var p = ctx ? ctx : this.pool;
160
+ return execute(p, sql, args);
88
161
  };
89
- PoolManager.prototype.execBatch = function (statements, firstSuccess, ctx) {
90
- var p = (ctx ? ctx : this.pool);
91
- return execBatch(p, statements, firstSuccess);
162
+ PoolManager.prototype.executeBatch = function (statements, firstSuccess, ctx) {
163
+ var p = ctx ? ctx : this.pool;
164
+ return executeBatch(p, statements, firstSuccess);
92
165
  };
93
166
  PoolManager.prototype.query = function (sql, args, m, bools, ctx) {
94
- var p = (ctx ? ctx : this.pool);
167
+ var p = ctx ? ctx : this.pool;
95
168
  return query(p, sql, args, m, bools);
96
169
  };
97
170
  PoolManager.prototype.queryOne = function (sql, args, m, bools, ctx) {
98
- var p = (ctx ? ctx : this.pool);
171
+ var p = ctx ? ctx : this.pool;
99
172
  return queryOne(p, sql, args, m, bools);
100
173
  };
101
- PoolManager.prototype.execScalar = function (sql, args, ctx) {
102
- var p = (ctx ? ctx : this.pool);
103
- return execScalar(p, sql, args);
174
+ PoolManager.prototype.executeScalar = function (sql, args, ctx) {
175
+ var p = ctx ? ctx : this.pool;
176
+ return executeScalar(p, sql, args);
104
177
  };
105
178
  PoolManager.prototype.count = function (sql, args, ctx) {
106
- var p = (ctx ? ctx : this.pool);
179
+ var p = ctx ? ctx : this.pool;
107
180
  return count(p, sql, args);
108
181
  };
109
182
  return PoolManager;
110
183
  }());
111
184
  exports.PoolManager = PoolManager;
112
- function execBatch(pool, statements, firstSuccess) {
113
- if (!statements || statements.length === 0) {
114
- return Promise.resolve(0);
115
- }
116
- else if (statements.length === 1) {
117
- return exec(pool, statements[0].query, statements[0].params);
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
- if (firstSuccess) {
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
- pool.getConnection(function (er0, connection) {
122
- if (er0) {
123
- return reject(er0);
203
+ _this.connection.commit(function (er3) {
204
+ if (er3) {
205
+ return reject(er3);
124
206
  }
125
- connection.beginTransaction(function (er1) {
126
- if (er1) {
127
- connection.rollback(function () {
128
- return reject(er1);
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
- var query0 = '';
133
- var queries_1 = [];
134
- var l = statements.length;
135
- for (var j = 0; j < l; j++) {
136
- var item = statements[j];
137
- if (j === 0) {
138
- query0 = mysql2_1.format(item.query, toArray(item.params));
139
- }
140
- else {
141
- if (item.query.endsWith(';')) {
142
- queries_1.push(mysql2_1.format(item.query, toArray(item.params)));
143
- }
144
- else {
145
- queries_1.push(mysql2_1.format(item.query + ';', toArray(item.params)));
146
- }
147
- }
148
- }
149
- connection.query(query0, function (er2a, results0) {
150
- if (er2a) {
151
- connection.rollback(function () {
152
- return reject(er2a);
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.execute(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
- else {
156
- if (results0 && results0.affectedRows === 0) {
157
- return 0;
158
- }
159
- else {
160
- connection.query(queries_1.join(''), function (er2, results) {
161
- if (er2) {
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(er2);
347
+ return reject(er1);
164
348
  });
165
349
  }
166
350
  else {
167
- connection.commit(function (er3) {
168
- if (er3) {
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.execute(queries_1.join(""), toArray(params_1), function (er2, results) {
368
+ if (er2) {
169
369
  connection.rollback(function () {
170
- return reject(er3);
370
+ buildError(er2);
371
+ return reject(er2);
372
+ });
373
+ }
374
+ else {
375
+ connection.commit(function (er3) {
376
+ if (er3) {
377
+ connection.rollback(function () {
378
+ return reject(er3);
379
+ });
380
+ }
171
381
  });
382
+ return resolve(results.affectedRows);
172
383
  }
173
384
  });
174
- var c = 0;
175
- c += results0.affectedRows + results.reduce(function (prev, item) { return prev + item.affectedRows; }, 0);
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
- else {
188
- return new Promise(function (resolve, reject) {
189
- pool.getConnection(function (er0, connection) {
190
- if (er0) {
191
- return reject(er0);
192
- }
193
- connection.beginTransaction(function (er1) {
194
- if (er1) {
195
- connection.rollback(function () {
196
- return reject(er1);
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.execute(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
- var queries_2 = [];
201
- statements.forEach(function (item) {
202
- if (item.query.endsWith(';')) {
203
- queries_2.push(mysql2_1.format(item.query, toArray(item.params)));
204
- }
205
- else {
206
- queries_2.push(mysql2_1.format(item.query + ';', toArray(item.params)));
207
- }
208
- });
209
- connection.query(queries_2.join(''), function (er2, results) {
210
- if (er2) {
211
- connection.rollback(function () {
212
- buildError(er2);
213
- return reject(er2);
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.execute(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
- else {
217
- connection.commit(function (er3) {
218
- if (er3) {
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.execute(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.execute(queries.join(""), toArray(params), function (er2, results) {
679
+ if (er2) {
219
680
  connection.rollback(function () {
220
- return reject(er3);
681
+ buildError(er2);
682
+ return reject(er2);
683
+ });
684
+ }
685
+ else {
686
+ connection.commit(function (er3) {
687
+ if (er3) {
688
+ connection.rollback(function () {
689
+ return reject(er3);
690
+ });
691
+ }
221
692
  });
693
+ return resolve(results.affectedRows);
222
694
  }
223
695
  });
224
- return resolve(results.reduce(function (prev, item) { return prev + item.affectedRows; }, 0));
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.execBatch = execBatch;
764
+ exports.executeBatchConnection = executeBatchConnection;
234
765
  function buildError(err) {
235
- if (err.errno === 1062 && err.code === 'ER_DUP_ENTRY') {
236
- err.error = 'duplicate';
766
+ if (err.errno === 1062 && err.code === "ER_DUP_ENTRY") {
767
+ err.error = "duplicate";
237
768
  }
238
769
  return err;
239
770
  }
240
- function exec(pool, sql, args) {
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) {
244
775
  p = toArray(args);
245
776
  return [2, new Promise(function (resolve, reject) {
246
- return pool.execute(sql, p, function (err, res) {
247
- if (err) {
248
- buildError(err);
249
- return reject(err);
250
- }
251
- else {
252
- return resolve(res.affectedRows);
253
- }
254
- });
255
- })];
777
+ return pool.execute(sql, p, function (err, res) {
778
+ if (err) {
779
+ buildError(err);
780
+ return reject(err);
781
+ }
782
+ else {
783
+ return resolve(res.affectedRows);
784
+ }
785
+ });
786
+ })];
256
787
  });
257
788
  });
258
789
  }
259
- exports.exec = exec;
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;
263
794
  return __generator(this, function (_a) {
264
795
  p = toArray(args);
265
796
  return [2, new Promise(function (resolve, reject) {
266
- return pool.query(sql, p, function (err, results, fields) {
267
- if (err) {
268
- return reject(err);
269
- }
270
- else {
271
- if (results.length > 0) {
272
- var arrayResult = results.map(function (item) {
273
- if (Array.isArray(item)) {
274
- return formatData(fields, item);
275
- }
276
- else {
277
- return item;
278
- }
279
- });
280
- return resolve(handleResults(arrayResult, m, bools));
797
+ return pool.query(sql, p, function (err, results, fields) {
798
+ if (err) {
799
+ return reject(err);
281
800
  }
282
801
  else {
283
- resolve([]);
802
+ if (results.length > 0) {
803
+ var arrayResult = results.map(function (item) {
804
+ if (Array.isArray(item)) {
805
+ return formatData(fields, item);
806
+ }
807
+ else {
808
+ return item;
809
+ }
810
+ });
811
+ return resolve(handleResults(arrayResult, m, bools));
812
+ }
813
+ else {
814
+ resolve([]);
815
+ }
284
816
  }
285
- }
286
- });
287
- })];
817
+ });
818
+ })];
288
819
  });
289
820
  });
290
821
  }
291
822
  exports.query = query;
292
823
  function queryOne(pool, sql, args, m, bools) {
293
824
  return query(pool, sql, args, m, bools).then(function (r) {
294
- return (r && r.length > 0 ? r[0] : null);
825
+ return r && r.length > 0 ? r[0] : null;
295
826
  });
296
827
  }
297
828
  exports.queryOne = queryOne;
298
- function execScalar(pool, sql, args) {
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,31 +837,31 @@ function execScalar(pool, sql, args) {
306
837
  }
307
838
  });
308
839
  }
309
- exports.execScalar = execScalar;
840
+ exports.executeScalar = executeScalar;
310
841
  function count(pool, sql, args) {
311
- return execScalar(pool, sql, args);
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
- if (typeof pool === 'function') {
850
+ if (typeof pool === "function") {
320
851
  return pool(s.query, s.params);
321
852
  }
322
853
  else {
323
- return exec(pool, s.query, s.params);
854
+ return execute(pool, s.query, s.params);
324
855
  }
325
856
  }
326
857
  exports.save = save;
327
858
  function saveBatch(pool, objs, table, attrs, ver, buildParam) {
328
859
  var s = build_1.buildToSaveBatch(objs, table, attrs, ver, buildParam);
329
- if (typeof pool === 'function') {
860
+ if (typeof pool === "function") {
330
861
  return pool(s);
331
862
  }
332
863
  else {
333
- return execBatch(pool, s);
864
+ return executeBatch(pool, s);
334
865
  }
335
866
  }
336
867
  exports.saveBatch = saveBatch;
@@ -345,7 +876,7 @@ function toArray(arr) {
345
876
  p.push(null);
346
877
  }
347
878
  else {
348
- if (typeof arr[i] === 'object') {
879
+ if (typeof arr[i] === "object") {
349
880
  if (arr[i] instanceof Date) {
350
881
  p.push(arr[i]);
351
882
  }
@@ -398,13 +929,13 @@ function handleBool(objs, bools) {
398
929
  var field = bools_1[_a];
399
930
  if (field.name) {
400
931
  var v = o[field.name];
401
- if (typeof v !== 'boolean' && v != null && v !== undefined) {
932
+ if (typeof v !== "boolean" && v != null && v !== undefined) {
402
933
  var b = field.true;
403
934
  if (b == null || b === undefined) {
404
- o[field.name] = ('1' == v || 'T' == v || 'Y' == v || 'true' == v || 'on' == v);
935
+ o[field.name] = "1" == v || "T" == v || "Y" == v || "true" == v || "on" == v;
405
936
  }
406
937
  else {
407
- o[field.name] = (v == b ? true : false);
938
+ o[field.name] = v == b ? true : false;
408
939
  }
409
940
  }
410
941
  }
@@ -500,10 +1031,10 @@ exports.getFields = getFields;
500
1031
  function buildFields(fields, all) {
501
1032
  var s = getFields(fields, all);
502
1033
  if (!s || s.length === 0) {
503
- return '*';
1034
+ return "*";
504
1035
  }
505
1036
  else {
506
- return s.join(',');
1037
+ return s.join(",");
507
1038
  }
508
1039
  }
509
1040
  exports.buildFields = buildFields;
@@ -515,7 +1046,7 @@ function getMapField(name, mp) {
515
1046
  if (!x) {
516
1047
  return name;
517
1048
  }
518
- if (typeof x === 'string') {
1049
+ if (typeof x === "string") {
519
1050
  return x;
520
1051
  }
521
1052
  return name;
@@ -536,7 +1067,7 @@ var StringService = (function () {
536
1067
  StringService.prototype.load = function (key, max) {
537
1068
  var _this = this;
538
1069
  var s = "select " + this.column + " from " + this.table + " where " + this.column + " like ? order by " + this.column + " limit " + max;
539
- return query(this.pool, s, ['' + key + '%']).then(function (arr) {
1070
+ return query(this.pool, s, ["" + key + "%"]).then(function (arr) {
540
1071
  return arr.map(function (i) { return i[_this.column]; });
541
1072
  });
542
1073
  };
@@ -546,10 +1077,10 @@ var StringService = (function () {
546
1077
  }
547
1078
  var arr = [];
548
1079
  for (var i = 1; i <= values.length; i++) {
549
- arr.push('(?)');
1080
+ arr.push("(?)");
550
1081
  }
551
- var s = "insert ignore into " + this.table + "(" + this.column + ")values" + arr.join(',');
552
- return exec(this.pool, s, values);
1082
+ var s = "insert ignore into " + this.table + "(" + this.column + ")values" + arr.join(",");
1083
+ return execute(this.pool, s, values);
553
1084
  };
554
1085
  return StringService;
555
1086
  }());
@@ -573,8 +1104,8 @@ var MySQLWriter = (function () {
573
1104
  this.attributes = attributes;
574
1105
  this.oneIfSuccess = oneIfSuccess;
575
1106
  this.write = this.write.bind(this);
576
- if (typeof pool === 'function') {
577
- this.exec = pool;
1107
+ if (typeof pool === "function") {
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.exec) {
1130
+ if (this.execute) {
600
1131
  if (this.oneIfSuccess) {
601
- return this.exec(stmt.query, stmt.params).then(function (ct) { return ct > 0 ? 1 : 0; });
1132
+ return this.execute(stmt.query, stmt.params).then(function (ct) { return (ct > 0 ? 1 : 0); });
602
1133
  }
603
1134
  else {
604
- return this.exec(stmt.query, stmt.params);
1135
+ return this.execute(stmt.query, stmt.params);
605
1136
  }
606
1137
  }
607
1138
  else {
608
1139
  if (this.oneIfSuccess) {
609
- return exec(this.pool, stmt.query, stmt.params).then(function (ct) { return ct > 0 ? 1 : 0; });
1140
+ return execute(this.pool, stmt.query, stmt.params).then(function (ct) { return (ct > 0 ? 1 : 0); });
610
1141
  }
611
1142
  else {
612
- return exec(this.pool, stmt.query, stmt.params);
1143
+ return execute(this.pool, stmt.query, stmt.params);
613
1144
  }
614
1145
  }
615
1146
  }
@@ -628,8 +1159,8 @@ var MySQLStreamWriter = (function () {
628
1159
  this.size = 0;
629
1160
  this.write = this.write.bind(this);
630
1161
  this.flush = this.flush.bind(this);
631
- if (typeof pool === 'function') {
632
- this.execBatch = pool;
1162
+ if (typeof pool === "function") {
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.execBatch) {
676
- return this.execBatch(stmt).then(function (r) {
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 execBatch(this.pool, stmt).then(function (r) {
1213
+ return executeBatch(this.pool, stmt).then(function (r) {
683
1214
  _this.list = [];
684
1215
  return total_1;
685
1216
  });
@@ -699,7 +1230,7 @@ var MySQLBatchWriter = (function () {
699
1230
  this.attributes = attributes;
700
1231
  this.oneIfSuccess = oneIfSuccess;
701
1232
  this.write = this.write.bind(this);
702
- if (typeof pool === 'function') {
1233
+ if (typeof pool === "function") {
703
1234
  this.execute = pool;
704
1235
  }
705
1236
  else {
@@ -737,10 +1268,10 @@ var MySQLBatchWriter = (function () {
737
1268
  }
738
1269
  else {
739
1270
  if (this.oneIfSuccess) {
740
- return execBatch(this.pool, stmts).then(function (ct) { return stmts.length; });
1271
+ return executeBatch(this.pool, stmts).then(function (ct) { return stmts.length; });
741
1272
  }
742
1273
  else {
743
- return execBatch(this.pool, stmts);
1274
+ return executeBatch(this.pool, stmts);
744
1275
  }
745
1276
  }
746
1277
  }
@@ -754,8 +1285,8 @@ exports.MySQLBatchWriter = MySQLBatchWriter;
754
1285
  var MySQLChecker = (function () {
755
1286
  function MySQLChecker(pool, service, timeout) {
756
1287
  this.pool = pool;
757
- this.timeout = (timeout ? timeout : 4200);
758
- this.service = (service ? service : 'mysql');
1288
+ this.timeout = timeout ? timeout : 4200;
1289
+ this.service = service ? service : "mysql";
759
1290
  this.check = this.check.bind(this);
760
1291
  this.name = this.name.bind(this);
761
1292
  this.build = this.build.bind(this);
@@ -767,7 +1298,7 @@ var MySQLChecker = (function () {
767
1298
  return __generator(this, function (_a) {
768
1299
  obj = {};
769
1300
  promise = new Promise(function (resolve, reject) {
770
- _this.pool.query('select current_time', function (err, result) {
1301
+ _this.pool.query("select current_time", function (err, result) {
771
1302
  if (err) {
772
1303
  return reject(err);
773
1304
  }
@@ -794,7 +1325,7 @@ var MySQLChecker = (function () {
794
1325
  if (!data) {
795
1326
  data = {};
796
1327
  }
797
- data['error'] = err;
1328
+ data["error"] = err;
798
1329
  }
799
1330
  return data;
800
1331
  };
@@ -808,7 +1339,7 @@ function promiseTimeOut(timeoutInMilliseconds, promise) {
808
1339
  setTimeout(function () {
809
1340
  reject("Timed out in: " + timeoutInMilliseconds + " milliseconds!");
810
1341
  }, timeoutInMilliseconds);
811
- })
1342
+ }),
812
1343
  ]);
813
1344
  }
814
1345
  var Exporter = (function () {
@@ -836,56 +1367,52 @@ var Exporter = (function () {
836
1367
  case 1:
837
1368
  stmt = _a.sent();
838
1369
  reader = this.connection.query(stmt.query, stmt.params);
839
- reader.on('error', function (err) { return er = err; });
1370
+ reader.on("error", function (err) { return (er = err); });
840
1371
  if (this.map) {
841
- reader.on('result', function (row) {
842
- return __awaiter(_this, void 0, void 0, function () {
843
- var obj, data;
844
- return __generator(this, function (_a) {
845
- ++idx;
846
- this.connection.pause();
847
- obj = mapOne(row, this.map);
848
- data = this.format(obj);
849
- this.write(data);
850
- this.connection.resume();
851
- return [2];
852
- });
1372
+ reader.on("result", function (row) { return __awaiter(_this, void 0, void 0, function () {
1373
+ var obj, data;
1374
+ return __generator(this, function (_a) {
1375
+ ++idx;
1376
+ this.connection.pause();
1377
+ obj = mapOne(row, this.map);
1378
+ data = this.format(obj);
1379
+ this.write(data);
1380
+ this.connection.resume();
1381
+ return [2];
853
1382
  });
854
- });
1383
+ }); });
855
1384
  }
856
1385
  else {
857
- reader.on('result', function (row) {
858
- return __awaiter(_this, void 0, void 0, function () {
859
- var data;
860
- return __generator(this, function (_a) {
861
- ++idx;
862
- this.connection.pause();
863
- data = this.format(row);
864
- this.write(data);
865
- this.connection.resume();
866
- return [2];
867
- });
1386
+ reader.on("result", function (row) { return __awaiter(_this, void 0, void 0, function () {
1387
+ var data;
1388
+ return __generator(this, function (_a) {
1389
+ ++idx;
1390
+ this.connection.pause();
1391
+ data = this.format(row);
1392
+ this.write(data);
1393
+ this.connection.resume();
1394
+ return [2];
868
1395
  });
869
- });
1396
+ }); });
870
1397
  }
871
1398
  return [2, new Promise(function (resolve, reject) {
872
- reader.on('end', function () {
873
- _this.end();
874
- if (er) {
875
- reject(er);
876
- }
877
- else {
878
- _this.connection.end(function (err) {
879
- if (err) {
880
- reject(err);
881
- }
882
- else {
883
- resolve(idx);
884
- }
885
- });
886
- }
887
- });
888
- })];
1399
+ reader.on("end", function () {
1400
+ _this.end();
1401
+ if (er) {
1402
+ reject(er);
1403
+ }
1404
+ else {
1405
+ _this.connection.end(function (err) {
1406
+ if (err) {
1407
+ reject(err);
1408
+ }
1409
+ else {
1410
+ resolve(idx);
1411
+ }
1412
+ });
1413
+ }
1414
+ });
1415
+ })];
889
1416
  }
890
1417
  });
891
1418
  });
@@ -917,61 +1444,57 @@ var ExportService = (function () {
917
1444
  case 1:
918
1445
  stmt = _a.sent();
919
1446
  reader = this.connection.query(stmt.query, stmt.params);
920
- reader.on('error', function (err) { return er = err; });
1447
+ reader.on("error", function (err) { return (er = err); });
921
1448
  if (this.map) {
922
- reader.on('result', function (row) {
923
- return __awaiter(_this, void 0, void 0, function () {
924
- var obj, data;
925
- return __generator(this, function (_a) {
926
- ++idx;
927
- this.connection.pause();
928
- obj = mapOne(row, this.map);
929
- data = this.formatter.format(obj);
930
- this.writer.write(data);
931
- this.connection.resume();
932
- return [2];
933
- });
1449
+ reader.on("result", function (row) { return __awaiter(_this, void 0, void 0, function () {
1450
+ var obj, data;
1451
+ return __generator(this, function (_a) {
1452
+ ++idx;
1453
+ this.connection.pause();
1454
+ obj = mapOne(row, this.map);
1455
+ data = this.formatter.format(obj);
1456
+ this.writer.write(data);
1457
+ this.connection.resume();
1458
+ return [2];
934
1459
  });
935
- });
1460
+ }); });
936
1461
  }
937
1462
  else {
938
- reader.on('result', function (row) {
939
- return __awaiter(_this, void 0, void 0, function () {
940
- var data;
941
- return __generator(this, function (_a) {
942
- ++idx;
943
- this.connection.pause();
944
- data = this.formatter.format(row);
945
- this.writer.write(data);
946
- this.connection.resume();
947
- return [2];
948
- });
1463
+ reader.on("result", function (row) { return __awaiter(_this, void 0, void 0, function () {
1464
+ var data;
1465
+ return __generator(this, function (_a) {
1466
+ ++idx;
1467
+ this.connection.pause();
1468
+ data = this.formatter.format(row);
1469
+ this.writer.write(data);
1470
+ this.connection.resume();
1471
+ return [2];
949
1472
  });
950
- });
1473
+ }); });
951
1474
  }
952
1475
  return [2, new Promise(function (resolve, reject) {
953
- reader.on('end', function () {
954
- if (_this.writer.end) {
955
- _this.writer.end();
956
- }
957
- else if (_this.writer.flush) {
958
- _this.writer.flush();
959
- }
960
- if (er) {
961
- reject(er);
962
- }
963
- else {
964
- _this.connection.end(function (err) {
965
- if (err) {
966
- reject(err);
967
- }
968
- else {
969
- resolve(idx);
970
- }
971
- });
972
- }
973
- });
974
- })];
1476
+ reader.on("end", function () {
1477
+ if (_this.writer.end) {
1478
+ _this.writer.end();
1479
+ }
1480
+ else if (_this.writer.flush) {
1481
+ _this.writer.flush();
1482
+ }
1483
+ if (er) {
1484
+ reject(er);
1485
+ }
1486
+ else {
1487
+ _this.connection.end(function (err) {
1488
+ if (err) {
1489
+ reject(err);
1490
+ }
1491
+ else {
1492
+ resolve(idx);
1493
+ }
1494
+ });
1495
+ }
1496
+ });
1497
+ })];
975
1498
  }
976
1499
  });
977
1500
  });
@@ -996,7 +1519,7 @@ function mapOne(results, m) {
996
1519
  if (!k0) {
997
1520
  k0 = key;
998
1521
  }
999
- obj2[k0] = (obj)[key];
1522
+ obj2[k0] = obj[key];
1000
1523
  }
1001
1524
  return obj2;
1002
1525
  }
@@ -1009,7 +1532,7 @@ function buildMap(attrs) {
1009
1532
  var k = ks_2[_i];
1010
1533
  var attr = attrs[k];
1011
1534
  attr.name = k;
1012
- var field = (attr.column ? attr.column : k);
1535
+ var field = attr.column ? attr.column : k;
1013
1536
  var s = field.toLowerCase();
1014
1537
  if (s !== k) {
1015
1538
  mp[s] = k;
@@ -1029,9 +1552,9 @@ function select(table, attrs) {
1029
1552
  var k = ks_3[_i];
1030
1553
  var attr = attrs[k];
1031
1554
  attr.name = k;
1032
- var field = (attr.column ? attr.column : k);
1555
+ var field = attr.column ? attr.column : k;
1033
1556
  cols.push(field);
1034
1557
  }
1035
- return "select " + cols.join(',') + " from " + table;
1558
+ return "select " + cols.join(",") + " from " + table;
1036
1559
  }
1037
1560
  exports.select = select;