tspace-mysql 1.1.2 → 1.1.4

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.
@@ -113,12 +113,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
113
113
  };
114
114
  Object.defineProperty(exports, "__esModule", { value: true });
115
115
  exports.Database = void 0;
116
+ var fs_1 = __importDefault(require("fs"));
117
+ var sql_formatter_1 = require("sql-formatter");
116
118
  var AbstractDatabase_1 = __importDefault(require("./AbstractDatabase"));
117
- var connection_1 = require("../connection");
118
119
  var utils_1 = __importDefault(require("../utils"));
119
120
  var constants_1 = __importDefault(require("../constants"));
120
- var fs_1 = __importDefault(require("fs"));
121
- var sql_formatter_1 = require("sql-formatter");
121
+ var DB_1 = __importDefault(require("./DB"));
122
+ var connection_1 = require("../connection");
122
123
  var Database = /** @class */ (function (_super) {
123
124
  __extends(Database, _super);
124
125
  function Database() {
@@ -176,8 +177,8 @@ var Database = /** @class */ (function (_super) {
176
177
  return this;
177
178
  };
178
179
  /**
179
- *
180
- * @param {string[]} ...columns
180
+ * select data form table
181
+ * @param {Array<string>} ...columns
181
182
  * @return {this} this
182
183
  */
183
184
  Database.prototype.select = function () {
@@ -187,12 +188,12 @@ var Database = /** @class */ (function (_super) {
187
188
  }
188
189
  var select = '*';
189
190
  if (columns === null || columns === void 0 ? void 0 : columns.length)
190
- select = columns.join(',');
191
+ select = columns.join(', ');
191
192
  this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(select));
192
193
  return this;
193
194
  };
194
195
  /**
195
- *
196
+ * chunks data from array
196
197
  * @param {number} chunk
197
198
  * @return {this} this
198
199
  */
@@ -202,7 +203,7 @@ var Database = /** @class */ (function (_super) {
202
203
  };
203
204
  /**
204
205
  *
205
- * @param {string | number | undefined | null | Boolean} condition when condition true will be callback
206
+ * @param {string | number | undefined | null | Boolean} condition when condition true will return query callback
206
207
  * @return {this} this
207
208
  */
208
209
  Database.prototype.when = function (condition, callback) {
@@ -222,19 +223,17 @@ var Database = /** @class */ (function (_super) {
222
223
  _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
223
224
  value = this.$utils.escape(value);
224
225
  value = this._valueTrueFalse(value);
225
- if (operator.toUpperCase() === this.$constants('LIKE'))
226
- value = "%".concat(value, "%");
227
226
  if (!this._queryWhereIsExists()) {
228
227
  this.$db.set('WHERE', [
229
228
  "".concat(this.$constants('WHERE')),
230
- "".concat(column, " ").concat(operator, " '").concat(value, "'")
229
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
231
230
  ].join(' '));
232
231
  return this;
233
232
  }
234
233
  this.$db.set('WHERE', [
235
234
  "".concat(this.$db.get('WHERE')),
236
235
  "".concat(this.$constants('AND')),
237
- "".concat(column, " ").concat(operator, " '").concat(value, "'")
236
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
238
237
  ].join(' '));
239
238
  return this;
240
239
  };
@@ -249,25 +248,23 @@ var Database = /** @class */ (function (_super) {
249
248
  var _a;
250
249
  _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
251
250
  value = this.$utils.escape(value);
252
- if (operator === this.$constants('LIKE'))
253
- value = "%".concat(value, "%");
254
- if (this._queryWhereIsExists()) {
251
+ if (!this._queryWhereIsExists()) {
255
252
  this.$db.set('WHERE', [
256
- "".concat(this.$db.get('WHERE')),
257
- "".concat(this.$constants('OR')),
258
- "".concat(column, " ").concat(operator, " '").concat(value, "'")
253
+ "".concat(this.$constants('WHERE')),
254
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
259
255
  ].join(' '));
260
256
  return this;
261
257
  }
262
258
  this.$db.set('WHERE', [
263
- "".concat(this.$constants('WHERE')),
264
- "".concat(column, " ").concat(operator, " '").concat(value, "'")
259
+ "".concat(this.$db.get('WHERE')),
260
+ "".concat(this.$constants('OR')),
261
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
265
262
  ].join(' '));
266
263
  return this;
267
264
  };
268
265
  /**
269
266
  *
270
- * @param {string} query where column with raw sql
267
+ * @param {string} sql where column with raw sql
271
268
  * @return {this} this
272
269
  */
273
270
  Database.prototype.whereRaw = function (sql) {
@@ -285,6 +282,70 @@ var Database = /** @class */ (function (_super) {
285
282
  ].join(' '));
286
283
  return this;
287
284
  };
285
+ /**
286
+ *
287
+ * @param {string} query where column with raw sql
288
+ * @return {this} this
289
+ */
290
+ Database.prototype.orWhereRaw = function (sql) {
291
+ if (!this._queryWhereIsExists()) {
292
+ this.$db.set('WHERE', [
293
+ "".concat(this.$constants('WHERE')),
294
+ "".concat(sql)
295
+ ].join(' '));
296
+ return this;
297
+ }
298
+ this.$db.set('WHERE', [
299
+ "".concat(this.$db.get('WHERE')),
300
+ "".concat(this.$constants('OR')),
301
+ "".concat(sql)
302
+ ].join(' '));
303
+ return this;
304
+ };
305
+ /**
306
+ *
307
+ * @param {string} tableAndLocalKey
308
+ * @param {string?} tableAndForeignKey
309
+ * @return {this}
310
+ */
311
+ Database.prototype.whereReference = function (tableAndLocalKey, tableAndForeignKey) {
312
+ if (!this._queryWhereIsExists()) {
313
+ this.$db.set('WHERE', [
314
+ "".concat(this.$constants('WHERE')),
315
+ "".concat(tableAndLocalKey, " = ").concat(tableAndForeignKey)
316
+ ].join(' '));
317
+ return this;
318
+ }
319
+ this.$db.set('WHERE', [
320
+ "".concat(this.$db.get('WHERE')),
321
+ "".concat(this.$constants('AND')),
322
+ "".concat(tableAndLocalKey, " = ").concat(tableAndForeignKey)
323
+ ].join(' '));
324
+ return this;
325
+ };
326
+ /**
327
+ *
328
+ * where exists
329
+ * @param {string} sql
330
+ * @return {this}
331
+ */
332
+ Database.prototype.whereExists = function (sql) {
333
+ if (!this._queryWhereIsExists()) {
334
+ this.$db.set('WHERE', [
335
+ "".concat(this.$constants('WHERE')),
336
+ "".concat(this.$constants('EXISTS')),
337
+ "(".concat(sql, ")")
338
+ ].join(' '));
339
+ return this;
340
+ }
341
+ this.$db.set('WHERE', [
342
+ "".concat(this.$db.get('WHERE')),
343
+ "".concat(this.$constants('AND')),
344
+ "".concat(this.$constants('EXISTS')),
345
+ "(".concat(sql, ")")
346
+ ].join(' '));
347
+ return this;
348
+ };
288
349
  /**
289
350
  *
290
351
  * @param {number} id
@@ -296,14 +357,14 @@ var Database = /** @class */ (function (_super) {
296
357
  if (!this._queryWhereIsExists()) {
297
358
  this.$db.set('WHERE', [
298
359
  "".concat(this.$constants('WHERE')),
299
- "".concat(column, " = '").concat(id, "'")
360
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(id, "'")
300
361
  ].join(' '));
301
362
  return this;
302
363
  }
303
364
  this.$db.set('WHERE', [
304
365
  "".concat(this.$db.get('WHERE')),
305
366
  "".concat(this.$constants('AND')),
306
- "".concat(column, " = '").concat(id, "'")
367
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(id, "'")
307
368
  ].join(' '));
308
369
  return this;
309
370
  };
@@ -318,14 +379,14 @@ var Database = /** @class */ (function (_super) {
318
379
  if (!this._queryWhereIsExists()) {
319
380
  this.$db.set('WHERE', [
320
381
  "".concat(this.$constants('WHERE')),
321
- "".concat(column, " = '").concat(email, "'")
382
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(email, "'")
322
383
  ].join(' '));
323
384
  return this;
324
385
  }
325
386
  this.$db.set('WHERE', [
326
387
  "".concat(this.$db.get('WHERE')),
327
388
  "".concat(this.$constants('AND')),
328
- "".concat(column, " = '").concat(email, "'")
389
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(email, "'")
329
390
  ].join(' '));
330
391
  return this;
331
392
  };
@@ -341,14 +402,14 @@ var Database = /** @class */ (function (_super) {
341
402
  if (!this._queryWhereIsExists()) {
342
403
  this.$db.set('WHERE', [
343
404
  "".concat(this.$constants('WHERE')),
344
- "".concat(column, " = '").concat(id, "'")
405
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(id, "'")
345
406
  ].join(' '));
346
407
  return this;
347
408
  }
348
409
  this.$db.set('WHERE', [
349
410
  "".concat(this.$db.get('WHERE')),
350
411
  "".concat(this.$constants('AND')),
351
- "".concat(column, " = '").concat(id, "'")
412
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " = '").concat(id, "'")
352
413
  ].join(' '));
353
414
  return this;
354
415
  };
@@ -367,14 +428,14 @@ var Database = /** @class */ (function (_super) {
367
428
  if (!this._queryWhereIsExists()) {
368
429
  this.$db.set('WHERE', [
369
430
  "".concat(this.$constants('WHERE')),
370
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(values, ")")
431
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(values, ")")
371
432
  ].join(' '));
372
433
  return this;
373
434
  }
374
435
  this.$db.set('WHERE', [
375
436
  "".concat(this.$db.get('WHERE')),
376
437
  "".concat(this.$constants('AND')),
377
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(values, ")")
438
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(values, ")")
378
439
  ].join(' '));
379
440
  return this;
380
441
  };
@@ -394,14 +455,14 @@ var Database = /** @class */ (function (_super) {
394
455
  if (!sql.includes(this.$constants('WHERE'))) {
395
456
  this.$db.set('WHERE', [
396
457
  "".concat(this.$constants('WHERE')),
397
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(values, ")")
458
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(values, ")")
398
459
  ].join(' '));
399
460
  return this;
400
461
  }
401
462
  this.$db.set('WHERE', [
402
463
  "".concat(this.$db.get('WHERE')),
403
464
  "".concat(this.$constants('OR')),
404
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(values, ")")
465
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(values, ")")
405
466
  ].join(' '));
406
467
  return this;
407
468
  };
@@ -421,14 +482,14 @@ var Database = /** @class */ (function (_super) {
421
482
  if (!sql.includes(this.$constants('WHERE'))) {
422
483
  this.$db.set('WHERE', [
423
484
  "".concat(this.$constants('WHERE')),
424
- "".concat(column, " ").concat(this.$constants('NOT_IN'), " (").concat(values, ")")
485
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('NOT_IN'), " (").concat(values, ")")
425
486
  ].join(' '));
426
487
  return this;
427
488
  }
428
489
  this.$db.set('WHERE', [
429
490
  "".concat(this.$db.get('WHERE')),
430
491
  "".concat(this.$constants('AND')),
431
- "".concat(column, " ").concat(this.$constants('NOT_IN'), " (").concat(values, ")")
492
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('NOT_IN'), " (").concat(values, ")")
432
493
  ].join(' '));
433
494
  return this;
434
495
  };
@@ -444,14 +505,14 @@ var Database = /** @class */ (function (_super) {
444
505
  if (!whereSubQuery.includes(this.$constants('WHERE'))) {
445
506
  this.$db.set('WHERE', [
446
507
  "".concat(this.$constants('WHERE')),
447
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
508
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
448
509
  ].join(' '));
449
510
  return this;
450
511
  }
451
512
  this.$db.set('WHERE', [
452
513
  "".concat(this.$db.get('WHERE')),
453
514
  "".concat(this.$constants('AND')),
454
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
515
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
455
516
  ].join(' '));
456
517
  return this;
457
518
  };
@@ -467,14 +528,14 @@ var Database = /** @class */ (function (_super) {
467
528
  if (!whereSubQuery.includes(this.$constants('WHERE'))) {
468
529
  this.$db.set('WHERE', [
469
530
  "".concat(this.$constants('WHERE')),
470
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
531
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
471
532
  ].join(' '));
472
533
  return this;
473
534
  }
474
535
  this.$db.set('WHERE', [
475
536
  "".concat(this.$db.get('WHERE')),
476
537
  "".concat(this.$constants('AND')),
477
- "".concat(column, " ").concat(this.$constants('NOT_IN'), " (").concat(subQuery, ")")
538
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('NOT_IN'), " (").concat(subQuery, ")")
478
539
  ].join(' '));
479
540
  return this;
480
541
  };
@@ -490,14 +551,14 @@ var Database = /** @class */ (function (_super) {
490
551
  if (!whereSubQuery.includes(this.$constants('WHERE'))) {
491
552
  this.$db.set('WHERE', [
492
553
  "".concat(this.$constants('WHERE')),
493
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
554
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
494
555
  ].join(' '));
495
556
  return this;
496
557
  }
497
558
  this.$db.set('WHERE', [
498
559
  "".concat(this.$db.get('WHERE')),
499
560
  "".concat(this.$constants('OR')),
500
- "".concat(column, " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
561
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IN'), " (").concat(subQuery, ")")
501
562
  ].join(' '));
502
563
  return this;
503
564
  };
@@ -518,7 +579,7 @@ var Database = /** @class */ (function (_super) {
518
579
  if (!this._queryWhereIsExists()) {
519
580
  this.$db.set('WHERE', [
520
581
  "".concat(this.$constants('WHERE')),
521
- "".concat(column, " ").concat(this.$constants('BETWEEN')),
582
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('BETWEEN')),
522
583
  "'".concat(value1, "' ").concat(this.$constants('AND'), " '").concat(value2, "'")
523
584
  ].join(' '));
524
585
  return this;
@@ -526,7 +587,7 @@ var Database = /** @class */ (function (_super) {
526
587
  this.$db.set('WHERE', [
527
588
  "".concat(this.$db.get('WHERE')),
528
589
  "".concat(this.$constants('AND')),
529
- "".concat(column, " ").concat(this.$constants('BETWEEN')),
590
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('BETWEEN')),
530
591
  "'".concat(value1, "' ").concat(this.$constants('AND'), " '").concat(value2, "'")
531
592
  ].join(' '));
532
593
  return this;
@@ -540,14 +601,14 @@ var Database = /** @class */ (function (_super) {
540
601
  if (!this._queryWhereIsExists()) {
541
602
  this.$db.set('WHERE', [
542
603
  "".concat(this.$constants('WHERE')),
543
- "".concat(column, " ").concat(this.$constants('IS_NULL'))
604
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IS_NULL'))
544
605
  ].join(' '));
545
606
  return this;
546
607
  }
547
608
  this.$db.set('WHERE', [
548
609
  "".concat(this.$db.get('WHERE')),
549
610
  "".concat(this.$constants('AND')),
550
- "".concat(column, " ").concat(this.$constants('IS_NULL'))
611
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IS_NULL'))
551
612
  ].join(' '));
552
613
  return this;
553
614
  };
@@ -560,14 +621,14 @@ var Database = /** @class */ (function (_super) {
560
621
  if (!this._queryWhereIsExists()) {
561
622
  this.$db.set('WHERE', [
562
623
  "".concat(this.$constants('WHERE')),
563
- "".concat(column, " ").concat(this.$constants('IS_NOT_NULL'))
624
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IS_NOT_NULL'))
564
625
  ].join(' '));
565
626
  return this;
566
627
  }
567
628
  this.$db.set('WHERE', [
568
629
  "".concat(this.$db.get('WHERE')),
569
630
  "".concat(this.$constants('AND')),
570
- "".concat(column, " ").concat(this.$constants('IS_NOT_NULL'))
631
+ "".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(this.$constants('IS_NOT_NULL'))
571
632
  ].join(' '));
572
633
  return this;
573
634
  };
@@ -586,127 +647,78 @@ var Database = /** @class */ (function (_super) {
586
647
  if (!this._queryWhereIsExists()) {
587
648
  this.$db.set('WHERE', [
588
649
  "".concat(this.$constants('WHERE')),
589
- "BINARY ".concat(column, " ").concat(operator, " '").concat(value, "'")
650
+ "BINARY ".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
590
651
  ].join(' '));
591
652
  return this;
592
653
  }
593
654
  this.$db.set('WHERE', [
594
655
  "".concat(this.$db.get('WHERE')),
595
656
  "".concat(this.$constants('AND')),
596
- "BINARY ".concat(column, " ").concat(operator, " '").concat(value, "'")
657
+ "BINARY ".concat(this._bindTableAndColumnInQueryWhere(column), " ").concat(operator, " '").concat(value, "'")
597
658
  ].join(' '));
598
659
  return this;
599
660
  };
600
661
  /**
601
- * where grouping of start statements
602
- * @param {string} column
603
- * @param {string?} operator = < > != !< !>
604
- * @param {any?} value
662
+ * where group query
663
+ * @param {function} callback callback query
605
664
  * @return {this}
606
665
  */
607
- Database.prototype.whereGroupStart = function (column, operator, value) {
608
- var _a;
609
- _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
610
- value = this.$utils.escape(value);
611
- value = this._valueTrueFalse(value);
612
- if (operator === this.$constants('LIKE'))
613
- value = "%".concat(value, "%");
614
- if (!this._queryWhereIsExists()) {
615
- this.$db.set('WHERE', [
616
- "".concat(this.$constants('WHERE')),
617
- "(".concat(column, " ").concat(operator, " '").concat(value, "'")
618
- ].join(' '));
619
- return this;
666
+ Database.prototype.whereQuery = function (callback) {
667
+ var db = new DB_1.default();
668
+ var repository = callback(db);
669
+ if (!(repository instanceof DB_1.default)) {
670
+ throw new Error("unknown callback query: '[".concat(repository, "]'"));
620
671
  }
621
- this.$db.set('WHERE', [
622
- "".concat(this.$db.get('WHERE')),
623
- "".concat(this.$constants('AND')),
624
- "(".concat(column, " ").concat(operator, " '").concat(value, "'")
625
- ].join(' '));
626
- return this;
627
- };
628
- /**
629
- * or where grouping of start statements
630
- * @param {string} column
631
- * @param {string?} operator = < > != !< !>
632
- * @param {any?} value
633
- * @return {this}
634
- */
635
- Database.prototype.orWhereGroupStart = function (column, operator, value) {
636
- var _a;
637
- _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
638
- value = this.$utils.escape(value);
639
- value = this._valueTrueFalse(value);
640
- if (operator === this.$constants('LIKE'))
641
- value = "%".concat(value, "%");
642
- if (!this._queryWhereIsExists()) {
643
- this.$db.set('WHERE', [
644
- "".concat(this.$constants('WHERE')),
645
- "(".concat(column, " ").concat(operator, " '").concat(value, "'")
646
- ].join(' '));
647
- return this;
672
+ var where = (repository === null || repository === void 0 ? void 0 : repository.$db.get('WHERE')) || '';
673
+ if (where === '') {
674
+ throw new Error("unknown callback query with where condition");
648
675
  }
649
- this.$db.set('WHERE', [
650
- "".concat(this.$db.get('WHERE')),
651
- "".concat(this.$constants('AND')),
652
- "(".concat(column, " ").concat(operator, " '").concat(value, "'")
653
- ].join(' '));
654
- return this;
655
- };
656
- /**
657
- * where grouping of end statements
658
- * @param {string} column
659
- * @param {string?} operator = < > != !< !>
660
- * @param {any?} value
661
- * @return {this}
662
- */
663
- Database.prototype.whereGroupEnd = function (column, operator, value) {
664
- var _a;
665
- _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
666
- value = this.$utils.escape(value);
667
- value = this._valueTrueFalse(value);
668
- if (operator === this.$constants('LIKE'))
669
- value = "%".concat(value, "%");
670
- if (!this._queryWhereIsExists()) {
676
+ if (this._queryWhereIsExists()) {
677
+ var query_1 = where.replace('WHERE', '');
671
678
  this.$db.set('WHERE', [
672
- "".concat(this.$constants('WHERE')),
673
- "".concat(column, " ").concat(operator, " '").concat(value, "')")
679
+ "".concat(this.$db.get('WHERE')),
680
+ "".concat(this.$constants('AND')),
681
+ "(".concat(query_1, ")")
674
682
  ].join(' '));
675
683
  return this;
676
684
  }
685
+ var query = where.replace('WHERE', '');
677
686
  this.$db.set('WHERE', [
678
- "".concat(this.$db.get('WHERE')),
679
- "".concat(this.$constants('OR')),
680
- "".concat(column, " ").concat(operator, " '").concat(value, "')")
687
+ "".concat(this.$constants('WHERE')),
688
+ "(".concat(query, ")")
681
689
  ].join(' '));
682
690
  return this;
683
691
  };
684
692
  /**
685
- * where grouping of end statements
686
- * @param {string} column
687
- * @param {string?} operator = < > != !< !>
688
- * @param {any?} value
693
+ * select by cases
694
+ * @param {array} cases array object [{ when : 'id < 7' , then : 'id is than under 7'}]
695
+ * @param {string} as
689
696
  * @return {this}
690
697
  */
691
- Database.prototype.orWhereGroupEnd = function (column, operator, value) {
692
- var _a;
693
- _a = __read(this._valueAndOperator(value, operator, arguments.length === 2), 2), value = _a[0], operator = _a[1];
694
- value = this.$utils.escape(value);
695
- value = this._valueTrueFalse(value);
696
- if (operator === this.$constants('LIKE'))
697
- value = "%".concat(value, "%");
698
- if (!this._queryWhereIsExists()) {
699
- this.$db.set('WHERE', [
700
- "".concat(this.$constants('WHERE')),
701
- "".concat(column, " ").concat(operator, " '").concat(value, "')")
702
- ].join(' '));
703
- return this;
698
+ Database.prototype.case = function (cases, as) {
699
+ var query = [this.$constants('CASE')];
700
+ for (var i = 0; i < cases.length; i++) {
701
+ var c = cases[i];
702
+ if (cases.length - 1 === i) {
703
+ if (c.then == null)
704
+ throw new Error("can't find then condition");
705
+ query = __spreadArray(__spreadArray([], __read(query), false), [
706
+ "".concat(this.$constants('ELSE'), " '").concat(c.then, "'"),
707
+ "".concat(this.$constants('END'))
708
+ ], false);
709
+ continue;
710
+ }
711
+ if (c.when == null)
712
+ throw new Error("can't find when condition");
713
+ if (c.then == null)
714
+ throw new Error("can't find then condition");
715
+ query = __spreadArray(__spreadArray([], __read(query), false), [
716
+ "".concat(this.$constants('WHEN'), " ").concat(c.when, " ").concat(this.$constants('THEN'), " '").concat(c.then, "'")
717
+ ], false);
704
718
  }
705
- this.$db.set('WHERE', [
706
- "".concat(this.$db.get('WHERE')),
707
- "".concat(this.$constants('OR')),
708
- "".concat(column, " ").concat(operator, " '").concat(value, "')")
709
- ].join(' '));
719
+ if (query.length <= 1)
720
+ return this;
721
+ this.$db.set('SELECT', "".concat(this.$db.get('SELECT'), ", ").concat(query.join(' '), " ").concat(this.$constants('AS'), " ").concat(as));
710
722
  return this;
711
723
  };
712
724
  /**
@@ -813,7 +825,7 @@ var Database = /** @class */ (function (_super) {
813
825
  /**
814
826
  *
815
827
  * @param {string} column
816
- * @param {string=} order [order=asc] asc, desc
828
+ * @param {string?} order [order=asc] asc, desc
817
829
  * @return {this}
818
830
  */
819
831
  Database.prototype.orderBy = function (column, order) {
@@ -826,7 +838,7 @@ var Database = /** @class */ (function (_super) {
826
838
  };
827
839
  /**
828
840
  *
829
- * @param {string=} column [column=id]
841
+ * @param {string?} column [column=id]
830
842
  * @return {this}
831
843
  */
832
844
  Database.prototype.latest = function (column) {
@@ -846,7 +858,7 @@ var Database = /** @class */ (function (_super) {
846
858
  };
847
859
  /**
848
860
  *
849
- * @param {string=} column [column=id]
861
+ * @param {string?} column [column=id]
850
862
  * @return {this}
851
863
  */
852
864
  Database.prototype.oldest = function (column) {
@@ -866,7 +878,7 @@ var Database = /** @class */ (function (_super) {
866
878
  };
867
879
  /**
868
880
  *
869
- * @param {string=} column [column=id]
881
+ * @param {string?} column [column=id]
870
882
  * @return {this}
871
883
  */
872
884
  Database.prototype.groupBy = function (column) {
@@ -992,14 +1004,14 @@ var Database = /** @class */ (function (_super) {
992
1004
  * @return {string} return sql query
993
1005
  */
994
1006
  Database.prototype.toString = function () {
995
- return this._queryGenrate();
1007
+ return this._buildQuery();
996
1008
  };
997
1009
  /**
998
1010
  *
999
1011
  * @return {string} return sql query
1000
1012
  */
1001
1013
  Database.prototype.toSQL = function () {
1002
- return this._queryGenrate();
1014
+ return this._buildQuery();
1003
1015
  };
1004
1016
  /**
1005
1017
  *
@@ -1113,6 +1125,33 @@ var Database = /** @class */ (function (_super) {
1113
1125
  this.$pool.set(pool.connection());
1114
1126
  return this;
1115
1127
  };
1128
+ /**
1129
+ *
1130
+ * @param {Function} pool pool connection database
1131
+ * @return {this} this
1132
+ */
1133
+ Database.prototype.pool = function (pool) {
1134
+ if (!(pool === null || pool === void 0 ? void 0 : pool.hasOwnProperty('query'))) {
1135
+ throw new Error('pool must have a query property');
1136
+ }
1137
+ this.$pool.set(pool);
1138
+ return this;
1139
+ };
1140
+ /**
1141
+ *
1142
+ * @param {object} connection pool database
1143
+ * @return {this} this
1144
+ */
1145
+ Database.prototype.bind = function (connection) {
1146
+ if (!(connection === null || connection === void 0 ? void 0 : connection.hasOwnProperty('query'))) {
1147
+ throw new Error('connection must have a query property');
1148
+ }
1149
+ if (typeof connection.query !== 'function') {
1150
+ throw new Error('connection must have a query function');
1151
+ }
1152
+ this.$pool.set(connection);
1153
+ return this;
1154
+ };
1116
1155
  /**
1117
1156
  * execute sql statements with raw sql query
1118
1157
  * @param {string} sql sql execute return data
@@ -1251,7 +1290,7 @@ var Database = /** @class */ (function (_super) {
1251
1290
  nextPage = currentPage + 1;
1252
1291
  prevPage = currentPage - 1 === 0 ? 1 : currentPage - 1;
1253
1292
  offset = (page - 1) * limit;
1254
- sql = this._queryGenrate();
1293
+ sql = this._buildQuery();
1255
1294
  if (!sql.includes(this.$constants('LIMIT'))) {
1256
1295
  sql = [
1257
1296
  "".concat(sql),
@@ -1286,7 +1325,7 @@ var Database = /** @class */ (function (_super) {
1286
1325
  "".concat(this.$constants('COUNT'), "(*)"),
1287
1326
  "".concat(this.$constants('AS'), " total")
1288
1327
  ].join(' '));
1289
- sql = this._queryGenrate();
1328
+ sql = this._buildQuery();
1290
1329
  return [4 /*yield*/, this._queryStatement(sql)];
1291
1330
  case 2:
1292
1331
  count = _c.sent();
@@ -1348,7 +1387,7 @@ var Database = /** @class */ (function (_super) {
1348
1387
  return __generator(this, function (_b) {
1349
1388
  switch (_b.label) {
1350
1389
  case 0:
1351
- sql = this._queryGenrate();
1390
+ sql = this._buildQuery();
1352
1391
  if (!sql.includes(this.$constants('LIMIT')))
1353
1392
  sql = "".concat(sql, " ").concat(this.$constants('LIMIT'), " 1");
1354
1393
  else
@@ -1360,20 +1399,20 @@ var Database = /** @class */ (function (_super) {
1360
1399
  this._hiddenColumn(result);
1361
1400
  if (this.$db.get('PLUCK')) {
1362
1401
  pluck = this.$db.get('PLUCK');
1363
- newData = result.shift();
1402
+ newData = result === null || result === void 0 ? void 0 : result.shift();
1364
1403
  checkProperty = newData.hasOwnProperty(pluck);
1365
1404
  if (!checkProperty)
1366
1405
  throw new Error("can't find property '".concat(pluck, "' of result"));
1367
1406
  return [2 /*return*/, newData[pluck] || null];
1368
1407
  }
1369
- return [2 /*return*/, result.shift() || null];
1408
+ return [2 /*return*/, (result === null || result === void 0 ? void 0 : result.shift()) || null];
1370
1409
  }
1371
1410
  });
1372
1411
  });
1373
1412
  };
1374
1413
  /**
1375
1414
  *
1376
- * execute data return object | null
1415
+ * execute data return object | throw rror
1377
1416
  * @return {promise<object | null>}
1378
1417
  */
1379
1418
  Database.prototype.findOne = function () {
@@ -1386,6 +1425,90 @@ var Database = /** @class */ (function (_super) {
1386
1425
  });
1387
1426
  });
1388
1427
  };
1428
+ /**
1429
+ *
1430
+ * execute data return object | throw Error
1431
+ * @return {promise<object | Error>}
1432
+ */
1433
+ Database.prototype.firstOrError = function (message, options) {
1434
+ var _a;
1435
+ return __awaiter(this, void 0, void 0, function () {
1436
+ var sql, result, pluck, newData, checkProperty, data_1, data;
1437
+ return __generator(this, function (_b) {
1438
+ switch (_b.label) {
1439
+ case 0:
1440
+ sql = this._buildQuery();
1441
+ if (!sql.includes(this.$constants('LIMIT')))
1442
+ sql = "".concat(sql, " ").concat(this.$constants('LIMIT'), " 1");
1443
+ else
1444
+ sql = sql.replace(this.$db.get('LIMIT'), "".concat(this.$constants('LIMIT'), " 1"));
1445
+ return [4 /*yield*/, this._queryStatement(sql)];
1446
+ case 1:
1447
+ result = _b.sent();
1448
+ if ((_a = this.$db.get('HIDDEN')) === null || _a === void 0 ? void 0 : _a.length)
1449
+ this._hiddenColumn(result);
1450
+ if (this.$db.get('PLUCK')) {
1451
+ pluck = this.$db.get('PLUCK');
1452
+ newData = result === null || result === void 0 ? void 0 : result.shift();
1453
+ checkProperty = newData.hasOwnProperty(pluck);
1454
+ if (!checkProperty)
1455
+ throw new Error("can't find property '".concat(pluck, "' of result"));
1456
+ data_1 = newData[pluck] || null;
1457
+ if (data_1 == null) {
1458
+ if (options == null) {
1459
+ throw { message: message, code: 400 };
1460
+ }
1461
+ throw __assign({ message: message }, options);
1462
+ }
1463
+ return [2 /*return*/, data_1];
1464
+ }
1465
+ data = (result === null || result === void 0 ? void 0 : result.shift()) || null;
1466
+ if (data == null) {
1467
+ if (options == null) {
1468
+ throw { message: message, code: 400 };
1469
+ }
1470
+ throw __assign({ message: message }, options);
1471
+ }
1472
+ return [2 /*return*/, data];
1473
+ }
1474
+ });
1475
+ });
1476
+ };
1477
+ /**
1478
+ *
1479
+ * execute data return object | null
1480
+ * @return {promise<object | null>}
1481
+ */
1482
+ Database.prototype.findOneOrError = function (message, options) {
1483
+ var _a;
1484
+ return __awaiter(this, void 0, void 0, function () {
1485
+ var sql, result, pluck, newData, checkProperty;
1486
+ return __generator(this, function (_b) {
1487
+ switch (_b.label) {
1488
+ case 0:
1489
+ sql = this._buildQuery();
1490
+ if (!sql.includes(this.$constants('LIMIT')))
1491
+ sql = "".concat(sql, " ").concat(this.$constants('LIMIT'), " 1");
1492
+ else
1493
+ sql = sql.replace(this.$db.get('LIMIT'), "".concat(this.$constants('LIMIT'), " 1"));
1494
+ return [4 /*yield*/, this._queryStatement(sql)];
1495
+ case 1:
1496
+ result = _b.sent();
1497
+ if ((_a = this.$db.get('HIDDEN')) === null || _a === void 0 ? void 0 : _a.length)
1498
+ this._hiddenColumn(result);
1499
+ if (this.$db.get('PLUCK')) {
1500
+ pluck = this.$db.get('PLUCK');
1501
+ newData = result === null || result === void 0 ? void 0 : result.shift();
1502
+ checkProperty = newData.hasOwnProperty(pluck);
1503
+ if (!checkProperty)
1504
+ throw new Error("can't find property '".concat(pluck, "' of result"));
1505
+ return [2 /*return*/, newData[pluck] || null];
1506
+ }
1507
+ return [2 /*return*/, (result === null || result === void 0 ? void 0 : result.shift()) || null];
1508
+ }
1509
+ });
1510
+ });
1511
+ };
1389
1512
  /**
1390
1513
  *
1391
1514
  * execute data return Array
@@ -1399,7 +1522,7 @@ var Database = /** @class */ (function (_super) {
1399
1522
  return __generator(this, function (_b) {
1400
1523
  switch (_b.label) {
1401
1524
  case 0:
1402
- sql = this._queryGenrate();
1525
+ sql = this._buildQuery();
1403
1526
  return [4 /*yield*/, this._queryStatement(sql)];
1404
1527
  case 1:
1405
1528
  result = _b.sent();
@@ -1455,7 +1578,7 @@ var Database = /** @class */ (function (_super) {
1455
1578
  return __generator(this, function (_b) {
1456
1579
  switch (_b.label) {
1457
1580
  case 0:
1458
- sql = this._queryGenrate();
1581
+ sql = this._buildQuery();
1459
1582
  return [4 /*yield*/, this._queryStatement(sql)];
1460
1583
  case 1:
1461
1584
  result = _b.sent();
@@ -1480,7 +1603,7 @@ var Database = /** @class */ (function (_super) {
1480
1603
  switch (_a.label) {
1481
1604
  case 0:
1482
1605
  this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(column));
1483
- sql = this._queryGenrate();
1606
+ sql = this._buildQuery();
1484
1607
  return [4 /*yield*/, this._queryStatement(sql)];
1485
1608
  case 1:
1486
1609
  result = _a.sent();
@@ -1509,11 +1632,11 @@ var Database = /** @class */ (function (_super) {
1509
1632
  "".concat(this.$constants('COUNT'), "(").concat(column, ")"),
1510
1633
  "".concat(this.$constants('AS'), " total")
1511
1634
  ].join(' '));
1512
- sql = this._queryGenrate();
1635
+ sql = this._buildQuery();
1513
1636
  return [4 /*yield*/, this._queryStatement(sql)];
1514
1637
  case 1:
1515
1638
  result = _b.sent();
1516
- return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.total) || 0];
1639
+ return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.total) || 0];
1517
1640
  }
1518
1641
  });
1519
1642
  });
@@ -1536,11 +1659,11 @@ var Database = /** @class */ (function (_super) {
1536
1659
  "".concat(this.$db.get('FROM')),
1537
1660
  "".concat(this.$db.get('TABLE_NAME')),
1538
1661
  "".concat(this.$db.get('WHERE')),
1539
- "".concat(this.$constants('LIMIT'), " 1) as 'exists'")
1662
+ "".concat(this.$constants('LIMIT'), " 1) ").concat(this.$constants('AS'), " 'exists'")
1540
1663
  ].join(' '))];
1541
1664
  case 1:
1542
1665
  result = _b.sent();
1543
- return [2 /*return*/, !!((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.exists) || false];
1666
+ return [2 /*return*/, !!((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.exists) || false];
1544
1667
  }
1545
1668
  });
1546
1669
  });
@@ -1564,11 +1687,11 @@ var Database = /** @class */ (function (_super) {
1564
1687
  "".concat(this.$constants('AVG'), "(").concat(column, ")"),
1565
1688
  "".concat(this.$constants('AS'), " avg")
1566
1689
  ].join(' '));
1567
- sql = this._queryGenrate();
1690
+ sql = this._buildQuery();
1568
1691
  return [4 /*yield*/, this._queryStatement(sql)];
1569
1692
  case 1:
1570
1693
  result = _b.sent();
1571
- return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.avg) || 0];
1694
+ return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.avg) || 0];
1572
1695
  }
1573
1696
  });
1574
1697
  });
@@ -1588,11 +1711,11 @@ var Database = /** @class */ (function (_super) {
1588
1711
  switch (_b.label) {
1589
1712
  case 0:
1590
1713
  this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(this.$constants('SUM'), "(").concat(column, ") ").concat(this.$constants('AS'), " sum"));
1591
- sql = this._queryGenrate();
1714
+ sql = this._buildQuery();
1592
1715
  return [4 /*yield*/, this._queryStatement(sql)];
1593
1716
  case 1:
1594
1717
  result = _b.sent();
1595
- return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.sum) || 0];
1718
+ return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.sum) || 0];
1596
1719
  }
1597
1720
  });
1598
1721
  });
@@ -1612,11 +1735,11 @@ var Database = /** @class */ (function (_super) {
1612
1735
  switch (_b.label) {
1613
1736
  case 0:
1614
1737
  this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(this.$constants('MAX'), "(").concat(column, ") ").concat(this.$constants('AS'), " max"));
1615
- sql = this._queryGenrate();
1738
+ sql = this._buildQuery();
1616
1739
  return [4 /*yield*/, this._queryStatement(sql)];
1617
1740
  case 1:
1618
1741
  result = _b.sent();
1619
- return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.max) || 0];
1742
+ return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.max) || 0];
1620
1743
  }
1621
1744
  });
1622
1745
  });
@@ -1636,11 +1759,11 @@ var Database = /** @class */ (function (_super) {
1636
1759
  switch (_b.label) {
1637
1760
  case 0:
1638
1761
  this.$db.set('SELECT', "".concat(this.$constants('SELECT'), " ").concat(this.$constants('MIN'), "(").concat(column, ") ").concat(this.$constants('AS'), " min"));
1639
- sql = this._queryGenrate();
1762
+ sql = this._buildQuery();
1640
1763
  return [4 /*yield*/, this._queryStatement(sql)];
1641
1764
  case 1:
1642
1765
  result = _b.sent();
1643
- return [2 /*return*/, ((_a = result.shift()) === null || _a === void 0 ? void 0 : _a.min) || 0];
1766
+ return [2 /*return*/, ((_a = result === null || result === void 0 ? void 0 : result.shift()) === null || _a === void 0 ? void 0 : _a.min) || 0];
1644
1767
  }
1645
1768
  });
1646
1769
  });
@@ -1722,7 +1845,7 @@ var Database = /** @class */ (function (_super) {
1722
1845
  ", ".concat(this.$constants('GROUP_CONCAT'), "(id)"),
1723
1846
  "".concat(this.$constants('AS'), " data")
1724
1847
  ].join(' '));
1725
- sql = this._queryGenrate();
1848
+ sql = this._buildQuery();
1726
1849
  return [4 /*yield*/, this._queryStatement(sql)];
1727
1850
  case 1:
1728
1851
  results = _a.sent();
@@ -1775,27 +1898,24 @@ var Database = /** @class */ (function (_super) {
1775
1898
  };
1776
1899
  /**
1777
1900
  * execute data when save *action [insert , update]
1778
- * @param {object} transaction | DB.beginTransaction()
1779
- * @return {Promise<any>}
1901
+ * @return {Promise<any>} promise
1780
1902
  */
1781
- Database.prototype.save = function (transaction) {
1903
+ Database.prototype.save = function () {
1782
1904
  var _a;
1783
1905
  return __awaiter(this, void 0, void 0, function () {
1784
- var attributes, query_1, query, _b;
1906
+ var attributes, query_2, query, _b;
1785
1907
  return __generator(this, function (_c) {
1786
1908
  switch (_c.label) {
1787
1909
  case 0:
1788
- if (transaction != null)
1789
- this.$db.set('TRANSACTION', transaction);
1790
1910
  attributes = this.$attributes;
1791
1911
  if ((_a = Object.keys(attributes)) === null || _a === void 0 ? void 0 : _a.length) {
1792
1912
  while (true) {
1793
1913
  if (this.$db.get('WHERE')) {
1794
- query_1 = this._queryUpdate(attributes);
1914
+ query_2 = this._queryUpdate(attributes);
1795
1915
  this.$db.set('UPDATE', [
1796
1916
  "".concat(this.$constants('UPDATE')),
1797
1917
  "".concat(this.$db.get('TABLE_NAME')),
1798
- "".concat(query_1)
1918
+ "".concat(query_2)
1799
1919
  ].join(' '));
1800
1920
  this.$db.set('SAVE', 'UPDATE');
1801
1921
  break;
@@ -1865,7 +1985,7 @@ var Database = /** @class */ (function (_super) {
1865
1985
  /**
1866
1986
  *
1867
1987
  * show schemas in table
1868
- * @param {string=} table table name
1988
+ * @param {string=} table [table= current table name]
1869
1989
  * @return {Promise<Array>}
1870
1990
  */
1871
1991
  Database.prototype.showSchemas = function (table) {
@@ -1947,20 +2067,20 @@ var Database = /** @class */ (function (_super) {
1947
2067
  };
1948
2068
  /**
1949
2069
  *
1950
- * backup database intro new database same server or to another server
2070
+ * backup this database intro new database same server or to another server
1951
2071
  * @param {Object} backupOptions
1952
2072
  * @param {string} backup.database
1953
- * @param {object?} backup.connection
1954
- * @param {string} backup.connection.host
1955
- * @param {number} backup.connection.port
1956
- * @param {string} backup.connection.database
1957
- * @param {string} backup.connection.username
1958
- * @param {string} backup.connection.password
2073
+ * @param {object?} backup.to
2074
+ * @param {string} backup.to.host
2075
+ * @param {number} backup.to.port
2076
+ * @param {string} backup.to.database
2077
+ * @param {string} backup.to.username
2078
+ * @param {string} backup.to.password
1959
2079
 
1960
2080
  * @return {Promise<boolean>}
1961
2081
  */
1962
2082
  Database.prototype.backup = function (_a) {
1963
- var database = _a.database, connection = _a.connection;
2083
+ var database = _a.database, to = _a.to;
1964
2084
  return __awaiter(this, void 0, void 0, function () {
1965
2085
  var tables, backup, tables_1, tables_1_1, t, table, schemas, createTableSQL, values, valueSQL, columns, e_1_1, backup_1, backup_1_1, b, e_2_1;
1966
2086
  var e_1, _b, e_2, _c;
@@ -2026,8 +2146,8 @@ var Database = /** @class */ (function (_super) {
2026
2146
  finally { if (e_1) throw e_1.error; }
2027
2147
  return [7 /*endfinally*/];
2028
2148
  case 12:
2029
- if (connection != null && Object.keys(connection).length)
2030
- this.connection(connection);
2149
+ if (to != null && Object.keys(to).length)
2150
+ this.connection(to);
2031
2151
  return [4 /*yield*/, this._queryStatement("".concat(this.$constants('CREATE_DATABASE_NOT_EXISTS'), " `").concat(database, "`"))];
2032
2152
  case 13:
2033
2153
  _d.sent();
@@ -2066,29 +2186,45 @@ var Database = /** @class */ (function (_super) {
2066
2186
  });
2067
2187
  });
2068
2188
  };
2189
+ /**
2190
+ *
2191
+ * backup database intro file
2192
+ * @param {Object} backupOptions
2193
+ * @param {string} backup.database
2194
+ * @param {object?} backup.filePath
2195
+ * @param {object?} backup.connection
2196
+ * @param {string} backup.connection.host
2197
+ * @param {number} backup.connection.port
2198
+ * @param {string} backup.connection.database
2199
+ * @param {string} backup.connection.username
2200
+ * @param {string} backup.connection.password
2201
+
2202
+ * @return {Promise<boolean>}
2203
+ */
2069
2204
  Database.prototype.backupToFile = function (_a) {
2205
+ var _b, _c;
2070
2206
  var filePath = _a.filePath, database = _a.database, connection = _a.connection;
2071
2207
  return __awaiter(this, void 0, void 0, function () {
2072
2208
  var tables, backup, tables_2, tables_2_1, t, table, schemas, createTableSQL, values, valueSQL, columns, e_3_1, sql, backup_2, backup_2_1, b;
2073
- var e_3, _b, e_4, _c;
2074
- return __generator(this, function (_d) {
2075
- switch (_d.label) {
2209
+ var e_3, _d, e_4, _e;
2210
+ return __generator(this, function (_f) {
2211
+ switch (_f.label) {
2076
2212
  case 0: return [4 /*yield*/, this._queryStatement('SHOW TABLES')];
2077
2213
  case 1:
2078
- tables = _d.sent();
2214
+ tables = _f.sent();
2079
2215
  backup = [];
2080
- _d.label = 2;
2216
+ _f.label = 2;
2081
2217
  case 2:
2082
- _d.trys.push([2, 10, 11, 12]);
2218
+ _f.trys.push([2, 10, 11, 12]);
2083
2219
  tables_2 = __values(tables), tables_2_1 = tables_2.next();
2084
- _d.label = 3;
2220
+ _f.label = 3;
2085
2221
  case 3:
2086
2222
  if (!!tables_2_1.done) return [3 /*break*/, 9];
2087
2223
  t = tables_2_1.value;
2088
- table = String(Object.values(t).shift());
2224
+ table = String((_b = Object.values(t)) === null || _b === void 0 ? void 0 : _b.shift());
2089
2225
  return [4 /*yield*/, this.showSchemas(table)];
2090
2226
  case 4:
2091
- schemas = _d.sent();
2227
+ schemas = _f.sent();
2092
2228
  createTableSQL = [
2093
2229
  "".concat(this.$constants('CREATE_TABLE_NOT_EXISTS')),
2094
2230
  "`".concat(table, "`"),
@@ -2097,43 +2233,43 @@ var Database = /** @class */ (function (_super) {
2097
2233
  ];
2098
2234
  return [4 /*yield*/, this.showValues(table)];
2099
2235
  case 5:
2100
- values = _d.sent();
2236
+ values = _f.sent();
2101
2237
  valueSQL = [];
2102
2238
  if (!values.length) return [3 /*break*/, 7];
2103
2239
  return [4 /*yield*/, this.showColumns(table)];
2104
2240
  case 6:
2105
- columns = _d.sent();
2241
+ columns = _f.sent();
2106
2242
  valueSQL = [
2107
2243
  "".concat(this.$constants('INSERT')),
2108
2244
  "`".concat(table, "`"),
2109
2245
  "(".concat(columns.map(function (column) { return "`".concat(column, "`"); }).join(','), ")"),
2110
2246
  "".concat(this.$constants('VALUES'), " ").concat(values.join(','), ";")
2111
2247
  ];
2112
- _d.label = 7;
2248
+ _f.label = 7;
2113
2249
  case 7:
2114
2250
  backup = __spreadArray(__spreadArray([], __read(backup), false), [
2115
2251
  {
2116
2252
  table: createTableSQL.join(' '),
2117
- values: valueSQL.join(' '),
2253
+ values: valueSQL.join(' ')
2118
2254
  }
2119
2255
  ], false);
2120
- _d.label = 8;
2256
+ _f.label = 8;
2121
2257
  case 8:
2122
2258
  tables_2_1 = tables_2.next();
2123
2259
  return [3 /*break*/, 3];
2124
2260
  case 9: return [3 /*break*/, 12];
2125
2261
  case 10:
2126
- e_3_1 = _d.sent();
2262
+ e_3_1 = _f.sent();
2127
2263
  e_3 = { error: e_3_1 };
2128
2264
  return [3 /*break*/, 12];
2129
2265
  case 11:
2130
2266
  try {
2131
- if (tables_2_1 && !tables_2_1.done && (_b = tables_2.return)) _b.call(tables_2);
2267
+ if (tables_2_1 && !tables_2_1.done && (_d = tables_2.return)) _d.call(tables_2);
2132
2268
  }
2133
2269
  finally { if (e_3) throw e_3.error; }
2134
2270
  return [7 /*endfinally*/];
2135
2271
  case 12:
2136
- if (connection != null && Object.keys(connection).length)
2272
+ if (connection != null && ((_c = Object.keys(connection)) === null || _c === void 0 ? void 0 : _c.length))
2137
2273
  this.connection(connection);
2138
2274
  sql = [
2139
2275
  "SET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";",
@@ -2154,7 +2290,7 @@ var Database = /** @class */ (function (_super) {
2154
2290
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
2155
2291
  finally {
2156
2292
  try {
2157
- if (backup_2_1 && !backup_2_1.done && (_c = backup_2.return)) _c.call(backup_2);
2293
+ if (backup_2_1 && !backup_2_1.done && (_e = backup_2.return)) _e.call(backup_2);
2158
2294
  }
2159
2295
  finally { if (e_4) throw e_4.error; }
2160
2296
  }
@@ -2164,7 +2300,7 @@ var Database = /** @class */ (function (_super) {
2164
2300
  keywordCase: 'upper',
2165
2301
  linesBetweenQueries: 1,
2166
2302
  }));
2167
- return [2 /*return*/, true];
2303
+ return [2 /*return*/];
2168
2304
  }
2169
2305
  });
2170
2306
  });
@@ -2178,7 +2314,7 @@ var Database = /** @class */ (function (_super) {
2178
2314
  Database.prototype.faker = function (rows) {
2179
2315
  if (rows === void 0) { rows = 1; }
2180
2316
  return __awaiter(this, void 0, void 0, function () {
2181
- var data, row, sql, fields, columnAndValue, fields_1, fields_1_1, _a, field, type, query;
2317
+ var data, row, sql, fields, columnAndValue, fields_1, fields_1_1, _a, field, type, passed, query;
2182
2318
  var e_5, _b, _c;
2183
2319
  return __generator(this, function (_d) {
2184
2320
  switch (_d.label) {
@@ -2188,8 +2324,9 @@ var Database = /** @class */ (function (_super) {
2188
2324
  _d.label = 1;
2189
2325
  case 1:
2190
2326
  if (!(row < rows)) return [3 /*break*/, 4];
2191
- if (this.$db.get('TABLE_NAME') === '' || this.$db.get('TABLE_NAME') == null)
2192
- throw new Error("unknow table");
2327
+ if (this.$db.get('TABLE_NAME') === '' || this.$db.get('TABLE_NAME') == null) {
2328
+ throw new Error("unknow this table");
2329
+ }
2193
2330
  sql = [
2194
2331
  "".concat(this.$constants('SHOW')),
2195
2332
  "".concat(this.$constants('FIELDS')),
@@ -2203,9 +2340,10 @@ var Database = /** @class */ (function (_super) {
2203
2340
  try {
2204
2341
  for (fields_1 = (e_5 = void 0, __values(fields)), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {
2205
2342
  _a = fields_1_1.value, field = _a.Field, type = _a.Type;
2206
- if (field.toLowerCase() === 'id' || field.toLowerCase() === '_id')
2207
- continue;
2208
- if (field.toLowerCase() === 'uuid')
2343
+ passed = field.toLowerCase() === 'id' ||
2344
+ field.toLowerCase() === '_id' ||
2345
+ field.toLowerCase() === 'uuid';
2346
+ if (passed)
2209
2347
  continue;
2210
2348
  columnAndValue = __assign(__assign({}, columnAndValue), (_c = {}, _c[field] = this.$utils.faker(type), _c));
2211
2349
  }
@@ -2224,7 +2362,11 @@ var Database = /** @class */ (function (_super) {
2224
2362
  return [3 /*break*/, 1];
2225
2363
  case 4:
2226
2364
  query = this._queryInsertMultiple(data);
2227
- this.$db.set('INSERT', "".concat(this.$constants('INSERT'), " ").concat(this.$db.get('TABLE_NAME'), " ").concat(query));
2365
+ this.$db.set('INSERT', [
2366
+ "".concat(this.$constants('INSERT')),
2367
+ "".concat(this.$db.get('TABLE_NAME')),
2368
+ "".concat(query)
2369
+ ].join(' '));
2228
2370
  this.$db.set('SAVE', 'INSERT_MULTIPLE');
2229
2371
  return [2 /*return*/, this.save()];
2230
2372
  }
@@ -2242,7 +2384,10 @@ var Database = /** @class */ (function (_super) {
2242
2384
  return __generator(this, function (_a) {
2243
2385
  switch (_a.label) {
2244
2386
  case 0:
2245
- sql = "".concat(this.$constants('TRUNCATE_TABLE'), " ").concat(this.$db.get('TABLE_NAME'));
2387
+ sql = [
2388
+ "".concat(this.$constants('TRUNCATE_TABLE')),
2389
+ "".concat(this.$db.get('TABLE_NAME'))
2390
+ ].join(' ');
2246
2391
  return [4 /*yield*/, this._queryStatement(sql)];
2247
2392
  case 1:
2248
2393
  _a.sent();
@@ -2262,7 +2407,10 @@ var Database = /** @class */ (function (_super) {
2262
2407
  return __generator(this, function (_a) {
2263
2408
  switch (_a.label) {
2264
2409
  case 0:
2265
- sql = "".concat(this.$constants('DROP_TABLE'), " ").concat(this.$db.get('TABLE_NAME'));
2410
+ sql = [
2411
+ "".concat(this.$constants('DROP_TABLE')),
2412
+ "".concat(this.$db.get('TABLE_NAME'))
2413
+ ].join(' ');
2266
2414
  return [4 /*yield*/, this._queryStatement(sql)];
2267
2415
  case 1:
2268
2416
  _a.sent();
@@ -2272,19 +2420,21 @@ var Database = /** @class */ (function (_super) {
2272
2420
  });
2273
2421
  };
2274
2422
  Database.prototype._queryWhereIsExists = function () {
2275
- return this.$db.get('WHERE').includes(this.$constants('WHERE'));
2423
+ var _a;
2424
+ return ((_a = this.$db.get('WHERE')) === null || _a === void 0 ? void 0 : _a.includes(this.$constants('WHERE'))) || false;
2425
+ };
2426
+ Database.prototype._bindTableAndColumnInQueryWhere = function (column) {
2427
+ return "".concat(this.$db.get('TABLE_NAME'), ".`").concat(column, "`");
2276
2428
  };
2277
2429
  Database.prototype._insertNotExists = function () {
2278
2430
  var _a;
2279
2431
  return __awaiter(this, void 0, void 0, function () {
2280
- var sql, check, _b, result, _c, _d, result_1, id, sql_1, data;
2432
+ var sql, _b, result, check, _c, _d, result_1, id, sql_1, data;
2281
2433
  return __generator(this, function (_e) {
2282
2434
  switch (_e.label) {
2283
2435
  case 0:
2284
2436
  if (!this.$db.get('WHERE'))
2285
2437
  throw new Error("Can't insert not exists without where condition");
2286
- sql = '';
2287
- check = false;
2288
2438
  sql = [
2289
2439
  "".concat(this.$constants('SELECT')),
2290
2440
  "".concat(this.$constants('EXISTS'), "(").concat(this.$constants('SELECT')),
@@ -2298,14 +2448,17 @@ var Database = /** @class */ (function (_super) {
2298
2448
  return [4 /*yield*/, this._queryStatement(sql)];
2299
2449
  case 1:
2300
2450
  _b = __read.apply(void 0, [_e.sent(), 1]), result = _b[0].exists;
2301
- check = !!parseInt(result);
2451
+ check = !!Number.parseInt(result);
2302
2452
  _c = check;
2303
2453
  switch (_c) {
2304
2454
  case false: return [3 /*break*/, 2];
2305
2455
  case true: return [3 /*break*/, 6];
2306
2456
  }
2307
2457
  return [3 /*break*/, 7];
2308
- case 2: return [4 /*yield*/, this._actionStatement({ sql: this.$db.get('INSERT'), returnId: true })];
2458
+ case 2: return [4 /*yield*/, this._actionStatement({
2459
+ sql: this.$db.get('INSERT'),
2460
+ returnId: true
2461
+ })];
2309
2462
  case 3:
2310
2463
  _d = __read.apply(void 0, [_e.sent(), 2]), result_1 = _d[0], id = _d[1];
2311
2464
  if (this.$db.get('TRANSACTION')) {
@@ -2315,7 +2468,12 @@ var Database = /** @class */ (function (_super) {
2315
2468
  });
2316
2469
  }
2317
2470
  if (!result_1) return [3 /*break*/, 5];
2318
- sql_1 = "".concat(this.$db.get('SELECT'), " ").concat(this.$db.get('FROM'), " ").concat(this.$db.get('TABLE_NAME'), " ").concat(this.$constants('WHERE'), " id = ").concat(id);
2471
+ sql_1 = [
2472
+ "".concat(this.$db.get('SELECT')),
2473
+ "".concat(this.$db.get('FROM')),
2474
+ "".concat(this.$db.get('TABLE_NAME')),
2475
+ "".concat(this.$constants('WHERE'), " id = ").concat(id)
2476
+ ].join(' ');
2319
2477
  return [4 /*yield*/, this._queryStatement(sql_1)];
2320
2478
  case 4:
2321
2479
  data = _e.sent();
@@ -2340,14 +2498,13 @@ var Database = /** @class */ (function (_super) {
2340
2498
  var _this = this;
2341
2499
  var pool = connection_1.Pool;
2342
2500
  return {
2343
- get: function (sql) { return __awaiter(_this, void 0, void 0, function () {
2344
- return __generator(this, function (_a) {
2345
- switch (_a.label) {
2346
- case 0: return [4 /*yield*/, pool.query(sql)];
2347
- case 1: return [2 /*return*/, _a.sent()];
2348
- }
2349
- });
2350
- }); },
2501
+ load: function () { return pool; },
2502
+ get: function (sql) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
2503
+ switch (_a.label) {
2504
+ case 0: return [4 /*yield*/, pool.query(sql)];
2505
+ case 1: return [2 /*return*/, _a.sent()];
2506
+ }
2507
+ }); }); },
2351
2508
  set: function (newConnection) {
2352
2509
  pool = newConnection;
2353
2510
  return;
@@ -2356,45 +2513,39 @@ var Database = /** @class */ (function (_super) {
2356
2513
  };
2357
2514
  Database.prototype._queryStatement = function (sql) {
2358
2515
  return __awaiter(this, void 0, void 0, function () {
2359
- var err_1;
2360
2516
  return __generator(this, function (_a) {
2361
2517
  switch (_a.label) {
2362
2518
  case 0:
2363
- _a.trys.push([0, 2, , 3]);
2364
2519
  if (this.$db.get('DEBUG'))
2365
2520
  this.$utils.consoleDebug(sql);
2366
2521
  return [4 /*yield*/, this.$pool.get(sql)];
2367
2522
  case 1: return [2 /*return*/, _a.sent()];
2368
- case 2:
2369
- err_1 = _a.sent();
2370
- throw new Error(err_1.message);
2371
- case 3: return [2 /*return*/];
2372
2523
  }
2373
2524
  });
2374
2525
  });
2375
2526
  };
2376
2527
  Database.prototype._actionStatement = function (_a) {
2377
- var _b = _a === void 0 ? {} : _a, sql = _b.sql, _c = _b.returnId, returnId = _c === void 0 ? false : _c;
2528
+ var sql = _a.sql, _b = _a.returnId, returnId = _b === void 0 ? false : _b;
2378
2529
  return __awaiter(this, void 0, void 0, function () {
2379
- var result_2, result, err_2;
2380
- return __generator(this, function (_d) {
2381
- switch (_d.label) {
2530
+ var result_2, result, err_1;
2531
+ return __generator(this, function (_c) {
2532
+ switch (_c.label) {
2382
2533
  case 0:
2383
- _d.trys.push([0, 4, , 5]);
2534
+ _c.trys.push([0, 4, , 5]);
2384
2535
  if (this.$db.get('DEBUG'))
2385
2536
  this.$utils.consoleDebug(sql);
2386
2537
  if (!returnId) return [3 /*break*/, 2];
2387
2538
  return [4 /*yield*/, this.$pool.get(sql)];
2388
2539
  case 1:
2389
- result_2 = _d.sent();
2540
+ result_2 = _c.sent();
2390
2541
  return [2 /*return*/, [result_2.affectedRows, result_2.insertId]];
2391
2542
  case 2: return [4 /*yield*/, this.$pool.get(sql)];
2392
2543
  case 3:
2393
- result = (_d.sent()).affectedRows;
2544
+ result = (_c.sent()).affectedRows;
2394
2545
  return [2 /*return*/, result];
2395
2546
  case 4:
2396
- err_2 = _d.sent();
2397
- throw new Error(err_2.message);
2547
+ err_1 = _c.sent();
2548
+ throw new Error(err_1.message);
2398
2549
  case 5: return [2 /*return*/];
2399
2550
  }
2400
2551
  });
@@ -2405,7 +2556,10 @@ var Database = /** @class */ (function (_super) {
2405
2556
  var _a, result, id, sql, data, result_3;
2406
2557
  return __generator(this, function (_b) {
2407
2558
  switch (_b.label) {
2408
- case 0: return [4 /*yield*/, this._actionStatement({ sql: this.$db.get('INSERT'), returnId: true })];
2559
+ case 0: return [4 /*yield*/, this._actionStatement({
2560
+ sql: this.$db.get('INSERT'),
2561
+ returnId: true
2562
+ })];
2409
2563
  case 1:
2410
2564
  _a = __read.apply(void 0, [_b.sent(), 2]), result = _a[0], id = _a[1];
2411
2565
  if (this.$db.get('TRANSACTION')) {
@@ -2415,7 +2569,12 @@ var Database = /** @class */ (function (_super) {
2415
2569
  });
2416
2570
  }
2417
2571
  if (!result) return [3 /*break*/, 3];
2418
- sql = "".concat(this.$db.get('SELECT'), " ").concat(this.$db.get('FROM'), " ").concat(this.$db.get('TABLE_NAME'), " ").concat(this.$constants('WHERE'), " id = ").concat(id);
2572
+ sql = [
2573
+ "".concat(this.$db.get('SELECT')),
2574
+ "".concat(this.$db.get('FROM')),
2575
+ "".concat(this.$db.get('TABLE_NAME')),
2576
+ "".concat(this.$constants('WHERE'), " id = ").concat(id)
2577
+ ].join(' ');
2419
2578
  return [4 /*yield*/, this._queryStatement(sql)];
2420
2579
  case 2:
2421
2580
  data = _b.sent();
@@ -2433,7 +2592,10 @@ var Database = /** @class */ (function (_super) {
2433
2592
  var e_6, _b;
2434
2593
  return __generator(this, function (_c) {
2435
2594
  switch (_c.label) {
2436
- case 0: return [4 /*yield*/, this._actionStatement({ sql: this.$db.get('INSERT'), returnId: true })];
2595
+ case 0: return [4 /*yield*/, this._actionStatement({
2596
+ sql: this.$db.get('INSERT'),
2597
+ returnId: true
2598
+ })];
2437
2599
  case 1:
2438
2600
  _a = __read.apply(void 0, [_c.sent(), 2]), result = _a[0], id = _a[1];
2439
2601
  if (!result) return [3 /*break*/, 3];
@@ -2456,7 +2618,13 @@ var Database = /** @class */ (function (_super) {
2456
2618
  }
2457
2619
  finally { if (e_6) throw e_6.error; }
2458
2620
  }
2459
- sql = "".concat(this.$db.get('SELECT'), " ").concat(this.$db.get('FROM'), " ").concat(this.$db.get('TABLE_NAME'), " ").concat(this.$constants('WHERE'), " id ").concat(this.$constants('IN'), " (").concat(arrayId, ")");
2621
+ sql = [
2622
+ "".concat(this.$db.get('SELECT')),
2623
+ "".concat(this.$db.get('FROM')),
2624
+ "".concat(this.$db.get('TABLE_NAME')),
2625
+ "".concat(this.$constants('WHERE'), " id"),
2626
+ "".concat(this.$constants('IN'), " (").concat(arrayId, ")")
2627
+ ].join(' ');
2460
2628
  return [4 /*yield*/, this._queryStatement(sql)];
2461
2629
  case 2:
2462
2630
  data = _c.sent();
@@ -2470,13 +2638,14 @@ var Database = /** @class */ (function (_super) {
2470
2638
  };
2471
2639
  Database.prototype._updateOrInsert = function () {
2472
2640
  return __awaiter(this, void 0, void 0, function () {
2473
- var sql, check, _a, result, _b, _c, result_4, id, sql_2, data, resultData, result_5, data, data_1, data_1_1, val;
2641
+ var sql, check, _a, result, _b, _c, result_4, id, sql_2, data, resultData, result_5, data, data_2, data_2_1, val;
2474
2642
  var e_7, _d;
2475
2643
  return __generator(this, function (_e) {
2476
2644
  switch (_e.label) {
2477
2645
  case 0:
2478
- if (!this.$db.get('WHERE'))
2646
+ if (!this.$db.get('WHERE')) {
2479
2647
  throw new Error("Can't update or insert without where condition");
2648
+ }
2480
2649
  sql = [
2481
2650
  "".concat(this.$constants('SELECT')),
2482
2651
  "".concat(this.$constants('EXISTS'), "(").concat(this.$constants('SELECT')),
@@ -2498,7 +2667,10 @@ var Database = /** @class */ (function (_super) {
2498
2667
  case true: return [3 /*break*/, 6];
2499
2668
  }
2500
2669
  return [3 /*break*/, 10];
2501
- case 2: return [4 /*yield*/, this._actionStatement({ sql: this.$db.get('INSERT'), returnId: true })];
2670
+ case 2: return [4 /*yield*/, this._actionStatement({
2671
+ sql: this.$db.get('INSERT'),
2672
+ returnId: true
2673
+ })];
2502
2674
  case 3:
2503
2675
  _c = __read.apply(void 0, [_e.sent(), 2]), result_4 = _c[0], id = _c[1];
2504
2676
  if (this.$db.get('TRANSACTION')) {
@@ -2521,7 +2693,12 @@ var Database = /** @class */ (function (_super) {
2521
2693
  this.$db.set('RESULT', resultData);
2522
2694
  return [2 /*return*/, resultData];
2523
2695
  case 5: return [2 /*return*/, null];
2524
- case 6: return [4 /*yield*/, this._actionStatement({ sql: "".concat(this.$db.get('UPDATE'), " ").concat(this.$db.get('WHERE')) })];
2696
+ case 6: return [4 /*yield*/, this._actionStatement({
2697
+ sql: [
2698
+ "".concat(this.$db.get('UPDATE')),
2699
+ "".concat(this.$db.get('WHERE'))
2700
+ ].join(' ')
2701
+ })];
2525
2702
  case 7:
2526
2703
  result_5 = _e.sent();
2527
2704
  if (!result_5) return [3 /*break*/, 9];
@@ -2535,15 +2712,15 @@ var Database = /** @class */ (function (_super) {
2535
2712
  data = _e.sent();
2536
2713
  if ((data === null || data === void 0 ? void 0 : data.length) > 1) {
2537
2714
  try {
2538
- for (data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
2539
- val = data_1_1.value;
2715
+ for (data_2 = __values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) {
2716
+ val = data_2_1.value;
2540
2717
  val.action_status = 'update';
2541
2718
  }
2542
2719
  }
2543
2720
  catch (e_7_1) { e_7 = { error: e_7_1 }; }
2544
2721
  finally {
2545
2722
  try {
2546
- if (data_1_1 && !data_1_1.done && (_d = data_1.return)) _d.call(data_1);
2723
+ if (data_2_1 && !data_2_1.done && (_d = data_2.return)) _d.call(data_2);
2547
2724
  }
2548
2725
  finally { if (e_7) throw e_7.error; }
2549
2726
  }
@@ -2569,8 +2746,13 @@ var Database = /** @class */ (function (_super) {
2569
2746
  switch (_a.label) {
2570
2747
  case 0:
2571
2748
  if (!this.$db.get('WHERE') && !ignoreWhere)
2572
- throw new Error("Can't update without where condition");
2573
- return [4 /*yield*/, this._actionStatement({ sql: "".concat(this.$db.get('UPDATE'), " ").concat(this.$db.get('WHERE')) })];
2749
+ throw new Error("can't update without where condition");
2750
+ return [4 /*yield*/, this._actionStatement({
2751
+ sql: [
2752
+ "".concat(this.$db.get('UPDATE')),
2753
+ "".concat(this.$db.get('WHERE'))
2754
+ ].join(' ')
2755
+ })];
2574
2756
  case 1:
2575
2757
  result = _a.sent();
2576
2758
  if (!result)
@@ -2607,23 +2789,29 @@ var Database = /** @class */ (function (_super) {
2607
2789
  };
2608
2790
  Database.prototype._queryUpdate = function (data) {
2609
2791
  var _this = this;
2610
- var keyValue = Object.entries(data).map(function (_a) {
2792
+ var values = Object.entries(data).map(function (_a) {
2611
2793
  var _b = __read(_a, 2), column = _b[0], value = _b[1];
2612
2794
  return "".concat(column, " = ").concat(value == null || value === 'NULL'
2613
2795
  ? 'NULL'
2614
- : "'".concat(_this.$utils.covertBooleanToNumber(value), "'"));
2796
+ : value.startsWith(_this.$constants('RAW'))
2797
+ ? "".concat(_this.$utils.covertBooleanToNumber(value)).replace(_this.$constants('RAW'), '')
2798
+ : "'".concat(_this.$utils.covertBooleanToNumber(value), "'"));
2615
2799
  });
2616
- return "".concat(this.$constants('SET'), " ").concat(keyValue);
2800
+ return "".concat(this.$constants('SET'), " ").concat(values);
2617
2801
  };
2618
2802
  Database.prototype._queryInsert = function (data) {
2619
2803
  var _this = this;
2620
- var columns = Object.keys(data).map(function (column) { return "".concat(column); });
2804
+ var columns = Object.keys(data).map(function (column) { return "`".concat(column, "`"); });
2621
2805
  var values = Object.values(data).map(function (value) {
2622
2806
  return "".concat(value == null || value === 'NULL'
2623
2807
  ? 'NULL'
2624
2808
  : "'".concat(_this.$utils.covertBooleanToNumber(value), "'"));
2625
2809
  });
2626
- return "(".concat(columns, ") ").concat(this.$constants('VALUES'), " (").concat(values, ")");
2810
+ return [
2811
+ "(".concat(columns, ")"),
2812
+ "".concat(this.$constants('VALUES')),
2813
+ "(".concat(values, ")")
2814
+ ].join(' ');
2627
2815
  };
2628
2816
  Database.prototype._queryInsertMultiple = function (data) {
2629
2817
  var e_8, _a;
@@ -2631,8 +2819,8 @@ var Database = /** @class */ (function (_super) {
2631
2819
  var _b;
2632
2820
  var values = [];
2633
2821
  try {
2634
- for (var data_2 = __values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) {
2635
- var objects = data_2_1.value;
2822
+ for (var data_3 = __values(data), data_3_1 = data_3.next(); !data_3_1.done; data_3_1 = data_3.next()) {
2823
+ var objects = data_3_1.value;
2636
2824
  var vals = Object.values(objects).map(function (value) {
2637
2825
  return "".concat(value == null || value === 'NULL'
2638
2826
  ? 'NULL'
@@ -2644,12 +2832,16 @@ var Database = /** @class */ (function (_super) {
2644
2832
  catch (e_8_1) { e_8 = { error: e_8_1 }; }
2645
2833
  finally {
2646
2834
  try {
2647
- if (data_2_1 && !data_2_1.done && (_a = data_2.return)) _a.call(data_2);
2835
+ if (data_3_1 && !data_3_1.done && (_a = data_3.return)) _a.call(data_3);
2648
2836
  }
2649
2837
  finally { if (e_8) throw e_8.error; }
2650
2838
  }
2651
- var columns = Object.keys((_b = data[0]) !== null && _b !== void 0 ? _b : []).map(function (column) { return "".concat(column); });
2652
- return "(".concat(columns, ") ").concat(this.$constants('VALUES'), " ").concat(values.join(','));
2839
+ var columns = Object.keys((_b = __spreadArray([], __read(data), false)) === null || _b === void 0 ? void 0 : _b.shift()).map(function (column) { return "`".concat(column, "`"); });
2840
+ return [
2841
+ "(".concat(columns, ")"),
2842
+ "".concat(this.$constants('VALUES')),
2843
+ "".concat(values.join(','))
2844
+ ].join(' ');
2653
2845
  };
2654
2846
  Database.prototype._valueAndOperator = function (value, operator, useDefault) {
2655
2847
  if (useDefault === void 0) { useDefault = false; }
@@ -2657,8 +2849,9 @@ var Database = /** @class */ (function (_super) {
2657
2849
  return [operator, '='];
2658
2850
  if (operator == null)
2659
2851
  throw new Error('bad arguments');
2660
- if (operator.toUpperCase() === this.$constants('LIKE'))
2852
+ if (operator.toUpperCase() === this.$constants('LIKE')) {
2661
2853
  operator = operator.toUpperCase();
2854
+ }
2662
2855
  return [value, operator];
2663
2856
  };
2664
2857
  Database.prototype._valueTrueFalse = function (value) {
@@ -2668,29 +2861,29 @@ var Database = /** @class */ (function (_super) {
2668
2861
  return 0;
2669
2862
  return value;
2670
2863
  };
2671
- Database.prototype._queryGenrate = function () {
2672
- var arraySql = [];
2864
+ Database.prototype._buildQuery = function () {
2865
+ var sql = [];
2673
2866
  while (true) {
2674
2867
  if (this.$db.get('INSERT')) {
2675
- arraySql = [
2676
- this.$db.get('INSERT'),
2868
+ sql = [
2869
+ this.$db.get('INSERT')
2677
2870
  ];
2678
2871
  break;
2679
2872
  }
2680
2873
  if (this.$db.get('UPDATE')) {
2681
- arraySql = [
2874
+ sql = [
2682
2875
  this.$db.get('UPDATE'),
2683
- this.$db.get('WHERE'),
2876
+ this.$db.get('WHERE')
2684
2877
  ];
2685
2878
  break;
2686
2879
  }
2687
2880
  if (this.$db.get('DELETE')) {
2688
- arraySql = [
2881
+ sql = [
2689
2882
  this.$db.get('DELETE')
2690
2883
  ];
2691
2884
  break;
2692
2885
  }
2693
- arraySql = [
2886
+ sql = [
2694
2887
  this.$db.get('SELECT'),
2695
2888
  this.$db.get('FROM'),
2696
2889
  this.$db.get('TABLE_NAME'),
@@ -2704,9 +2897,7 @@ var Database = /** @class */ (function (_super) {
2704
2897
  ];
2705
2898
  break;
2706
2899
  }
2707
- var filterSql = arraySql.filter(function (data) { return data !== '' || data != null; });
2708
- var sql = filterSql.join(' ');
2709
- return sql;
2900
+ return sql.filter(function (s) { return s !== '' || s == null; }).join(' ');
2710
2901
  };
2711
2902
  Database.prototype._setupLogger = function () {
2712
2903
  var logger = [];
@@ -2730,8 +2921,9 @@ var Database = /** @class */ (function (_super) {
2730
2921
  try {
2731
2922
  for (var _b = __values(Object === null || Object === void 0 ? void 0 : Object.entries(constants_1.default)), _c = _b.next(); !_c.done; _c = _b.next()) {
2732
2923
  var _d = __read(_c.value, 2), index = _d[0], constant = _d[1];
2733
- if (index === name)
2924
+ if (index === name.toLocaleUpperCase()) {
2734
2925
  return constant;
2926
+ }
2735
2927
  }
2736
2928
  }
2737
2929
  catch (e_9_1) { e_9 = { error: e_9_1 }; }