tspace-mysql 1.9.4-beta.3 → 1.9.4-beta.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.
- package/README.md +310 -52
- package/dist/cli/dump/db.js +3 -15
- package/dist/cli/dump/db.js.map +1 -1
- package/dist/cli/index.js +0 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/migrations/make-db.js +1 -1
- package/dist/cli/migrations/make-db.js.map +1 -1
- package/dist/cli/migrations/make-model.js +1 -6
- package/dist/cli/migrations/make-model.js.map +1 -1
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.js +14 -5
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/constants/index.d.ts +1 -0
- package/dist/lib/constants/index.js +1 -0
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +2 -1
- package/dist/lib/core/Abstracts/AbstractDB.d.ts +5 -3
- package/dist/lib/core/Abstracts/AbstractDB.js.map +1 -1
- package/dist/lib/core/Blueprint.d.ts +10 -0
- package/dist/lib/core/Blueprint.js +15 -0
- package/dist/lib/core/Blueprint.js.map +1 -1
- package/dist/lib/core/Builder.d.ts +145 -10
- package/dist/lib/core/Builder.js +499 -143
- package/dist/lib/core/Builder.js.map +1 -1
- package/dist/lib/core/DB.d.ts +130 -196
- package/dist/lib/core/DB.js +434 -529
- package/dist/lib/core/DB.js.map +1 -1
- package/dist/lib/core/Driver/index.d.ts +15 -1
- package/dist/lib/core/Driver/index.js +3 -0
- package/dist/lib/core/Driver/index.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.d.ts +14 -0
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js +135 -33
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.d.ts +14 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js +28 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.d.ts +14 -0
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js +105 -23
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.d.ts +16 -1
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js +238 -79
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.d.ts +17 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js +148 -28
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js.map +1 -1
- package/dist/lib/core/Model.d.ts +243 -33
- package/dist/lib/core/Model.js +354 -56
- package/dist/lib/core/Model.js.map +1 -1
- package/dist/lib/core/Package.d.ts +5 -0
- package/dist/lib/core/Package.js +7 -2
- package/dist/lib/core/Package.js.map +1 -1
- package/dist/lib/core/Pool.js +44 -62
- package/dist/lib/core/Pool.js.map +1 -1
- package/dist/lib/core/Queue/types.d.ts +1 -0
- package/dist/lib/core/Queue/worker-lock.d.ts +17 -0
- package/dist/lib/core/Queue/worker-lock.js +30 -0
- package/dist/lib/core/Queue/worker-lock.js.map +1 -0
- package/dist/lib/core/Queue/worker.d.ts +6 -3
- package/dist/lib/core/Queue/worker.js +126 -46
- package/dist/lib/core/Queue/worker.js.map +1 -1
- package/dist/lib/core/Repository.d.ts +164 -29
- package/dist/lib/core/Repository.js +180 -40
- package/dist/lib/core/Repository.js.map +1 -1
- package/dist/lib/core/Schema.d.ts +5 -2
- package/dist/lib/core/Schema.js +111 -3
- package/dist/lib/core/Schema.js.map +1 -1
- package/dist/lib/core/StateManager.d.ts +17 -0
- package/dist/lib/core/StateManager.js +5 -1
- package/dist/lib/core/StateManager.js.map +1 -1
- package/dist/lib/core/UtilityTypes.d.ts +5 -1
- package/dist/lib/core/UtilityTypes.js.map +1 -1
- package/dist/lib/types/index.d.ts +55 -23
- package/dist/lib/types/repository/index.d.ts +10 -18
- package/dist/lib/utils/index.d.ts +6 -2
- package/dist/lib/utils/index.js +85 -15
- package/dist/lib/utils/index.js.map +1 -1
- package/package.json +1 -2
- package/dist/cli/dump/table.d.ts +0 -4
- package/dist/cli/dump/table.js +0 -41
- package/dist/cli/dump/table.js.map +0 -1
package/README.md
CHANGED
|
@@ -97,6 +97,7 @@ npm install -D typescript@5.9.3
|
|
|
97
97
|
- [Returning Results](#returning-results)
|
|
98
98
|
- [Query Statements](#query-statements)
|
|
99
99
|
- [Stream Statements](#stream-statements)
|
|
100
|
+
- [Session Statements](#session-statements)
|
|
100
101
|
- [Select Statements](#select-statements)
|
|
101
102
|
- [Raw Expressions](#raw-expressions)
|
|
102
103
|
- [Ordering, Grouping, Limit and Offset](#ordering-grouping-limit-and-offset)
|
|
@@ -129,6 +130,7 @@ npm install -D typescript@5.9.3
|
|
|
129
130
|
- [Unset Statements](#unset-statements)
|
|
130
131
|
- [Common Table Expressions](#common-table-expressions)
|
|
131
132
|
- [Union](#union)
|
|
133
|
+
- [Explain](#explain)
|
|
132
134
|
- [More Methods](#more-methods)
|
|
133
135
|
- [Database Transactions](#database-transactions)
|
|
134
136
|
- [Race Condition](#race-condition)
|
|
@@ -326,7 +328,7 @@ To connect your application to a Cluster database, use the following configurati
|
|
|
326
328
|
|
|
327
329
|
```js
|
|
328
330
|
// ----------------------------------------------------
|
|
329
|
-
//
|
|
331
|
+
// @Example MariaDB Galera Cluster
|
|
330
332
|
|
|
331
333
|
DB_DRIVER = mariadb
|
|
332
334
|
DB_HOST = host-load-balncer ❌
|
|
@@ -338,20 +340,156 @@ DB_DATABASE = database
|
|
|
338
340
|
|
|
339
341
|
```js
|
|
340
342
|
// ----------------------------------------------------
|
|
343
|
+
// Configure multiple database nodes using comma-separated connection values.
|
|
344
|
+
|
|
341
345
|
// MariaDB Galera Cluster
|
|
342
|
-
// host1
|
|
343
|
-
// host2
|
|
344
|
-
|
|
346
|
+
// host1 → Primary node
|
|
347
|
+
// host2 → Replica node 1
|
|
348
|
+
// host3 → Replica node 2
|
|
345
349
|
DB_DRIVER = mariadb
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
// master can be more than 1
|
|
349
|
-
// DB_HOST = master@host1,slave@host2,slave@host3
|
|
350
|
+
// Host 1 remains the primary; hosts 2 and 3 are replicas.
|
|
351
|
+
DB_HOST = host1,host2,host3
|
|
350
352
|
DB_PORT = 3306,3307,3308
|
|
351
353
|
DB_USERNAME = root1,root2,root3
|
|
352
354
|
DB_PASSWORD = password1,password2,password3
|
|
353
355
|
DB_DATABASE = database
|
|
354
356
|
```
|
|
357
|
+
Example Flow
|
|
358
|
+
|
|
359
|
+
```text
|
|
360
|
+
┌─────────────────┐
|
|
361
|
+
│ Application │
|
|
362
|
+
└────────┬────────┘
|
|
363
|
+
│
|
|
364
|
+
┌────────────┴────────────┐
|
|
365
|
+
│ │
|
|
366
|
+
WRITE → READ READ
|
|
367
|
+
│ │
|
|
368
|
+
▼ ▼
|
|
369
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
370
|
+
│ host1 │ │ Random Replica │
|
|
371
|
+
│ PRIMARY │ │ │
|
|
372
|
+
└─────────────────┘ └────────┬────────┘
|
|
373
|
+
│
|
|
374
|
+
┌──────┴──────┐
|
|
375
|
+
▼ ▼
|
|
376
|
+
┌────────────┐ ┌────────────┐
|
|
377
|
+
│ host2 │ │ host3 │
|
|
378
|
+
│ REPLICA 1 │ │ REPLICA 2 │
|
|
379
|
+
└────────────┘ └────────────┘
|
|
380
|
+
```
|
|
381
|
+
Node Selection
|
|
382
|
+
|
|
383
|
+
When no node is explicitly selected, the database automatically routes
|
|
384
|
+
queries based on the action being performed.
|
|
385
|
+
|
|
386
|
+
Write / Action Queries
|
|
387
|
+
|
|
388
|
+
Queries that modify data are automatically sent to the primary node.
|
|
389
|
+
```js
|
|
390
|
+
await new DB('users')
|
|
391
|
+
.create({
|
|
392
|
+
name: 'John'
|
|
393
|
+
})
|
|
394
|
+
.save()
|
|
395
|
+
|
|
396
|
+
await new DB('users')
|
|
397
|
+
.update({
|
|
398
|
+
name: 'John Doe'
|
|
399
|
+
})
|
|
400
|
+
.save()
|
|
401
|
+
|
|
402
|
+
await new DB('users')
|
|
403
|
+
.delete()
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
Read / Select Queries
|
|
407
|
+
|
|
408
|
+
Queries that only read data are automatically sent to a random replica node.
|
|
409
|
+
```js
|
|
410
|
+
await new DB('users')
|
|
411
|
+
.findMany();
|
|
412
|
+
```
|
|
413
|
+
Use the primary node explicitly:
|
|
414
|
+
|
|
415
|
+
```js
|
|
416
|
+
await new DB('users')
|
|
417
|
+
.useNode('primary') // host1
|
|
418
|
+
.findMany();
|
|
419
|
+
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Use a random replica node:
|
|
423
|
+
```js
|
|
424
|
+
await new DB('users')
|
|
425
|
+
.useNode('replica') // host2,host3
|
|
426
|
+
.findMany();
|
|
427
|
+
```
|
|
428
|
+
Use a specific replica node:
|
|
429
|
+
```js
|
|
430
|
+
await new DB('users')
|
|
431
|
+
.useNode('replica', { node: 1 }) // host2
|
|
432
|
+
.findMany()
|
|
433
|
+
|
|
434
|
+
await new DB('users')
|
|
435
|
+
.useNode('replica', { node: 2 }) // host3
|
|
436
|
+
.findMany()
|
|
437
|
+
```
|
|
438
|
+
Transactions are executed on the **primary node by default**, but you can use a replica node if needed.
|
|
439
|
+
|
|
440
|
+
Use `.bind(trx)` to ensure queries are executed within the same transaction.
|
|
441
|
+
```js
|
|
442
|
+
await new DB()
|
|
443
|
+
.useNode('primary') // Primary by default; replicas can also be selected.
|
|
444
|
+
.transaction(async (trx) => {
|
|
445
|
+
await new User()
|
|
446
|
+
.create({
|
|
447
|
+
name: `tspace`,
|
|
448
|
+
email: "tspace@example.com",
|
|
449
|
+
})
|
|
450
|
+
.bind(trx) // Don't forget to bind the transaction
|
|
451
|
+
.save();
|
|
452
|
+
});
|
|
453
|
+
```
|
|
454
|
+
⚠️ Why .bind(trx) is required
|
|
455
|
+
|
|
456
|
+
The transaction is associated with a specific database connection.
|
|
457
|
+
Calling .bind(trx) ensures that the query uses the same connection and transaction context.
|
|
458
|
+
|
|
459
|
+
Without .bind(trx), the query may use another connection and will not be part of the transaction.
|
|
460
|
+
```js
|
|
461
|
+
await new DB()
|
|
462
|
+
.useNode('primary')
|
|
463
|
+
.transaction(async (trx) => {
|
|
464
|
+
|
|
465
|
+
const user = await new User()
|
|
466
|
+
.create({
|
|
467
|
+
name: `tspace`,
|
|
468
|
+
email: "tspace@example.com",
|
|
469
|
+
})
|
|
470
|
+
.bind(trx)
|
|
471
|
+
.save();
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
// ⚠️ Read operations use a random replica by default.
|
|
475
|
+
const findUser = await new User().where('id',user.id).findOne()
|
|
476
|
+
// May not be found because the query can be routed to
|
|
477
|
+
// host2 or host3 before the replication has completed.
|
|
478
|
+
|
|
479
|
+
// How to Fix Read-After-Write
|
|
480
|
+
// If you need to read data immediately after a transaction,
|
|
481
|
+
// there are two ways to ensure the read sees the latest data.
|
|
482
|
+
const fixed1 = await new User()
|
|
483
|
+
.bind(trx) // Uses the same transaction connection.
|
|
484
|
+
.where('id',user.id)
|
|
485
|
+
.findOne()
|
|
486
|
+
|
|
487
|
+
const fixed2 = await new User()
|
|
488
|
+
.useNode('primary') // Uses the same primary node selected for the transaction.
|
|
489
|
+
.where('id',user.id)
|
|
490
|
+
.findOne()
|
|
491
|
+
|
|
492
|
+
```
|
|
355
493
|
|
|
356
494
|
## SQL Like
|
|
357
495
|
SQL (Structured Query Language) is used to manage data in relational databases.
|
|
@@ -511,6 +649,10 @@ const users = await new DB("users").toRawSQL(); // sql query string
|
|
|
511
649
|
|
|
512
650
|
const users = await new DB("users").pagination(); // Object of pagination
|
|
513
651
|
|
|
652
|
+
const users = await new DB("users").cursorPagination(); // object of cursor pagination
|
|
653
|
+
|
|
654
|
+
const users = await new DB("users").stream() // object AsyncGenerator
|
|
655
|
+
|
|
514
656
|
const users = await new DB("users").makeSelectStatement() // query string for select statement
|
|
515
657
|
|
|
516
658
|
const users = await new DB("users").makeInsertStatement() // query string for insert statement
|
|
@@ -542,11 +684,69 @@ const query = await DB.query(
|
|
|
542
684
|
```
|
|
543
685
|
|
|
544
686
|
## Stream Statements
|
|
687
|
+
stream() returns an AsyncGenerator,
|
|
688
|
+
allowing records to be processed one at a time without loading the entire result set into memory.
|
|
689
|
+
|
|
690
|
+
Using `for await...of`:
|
|
691
|
+
```js
|
|
692
|
+
const stream = new DB('users').stream();
|
|
693
|
+
|
|
694
|
+
for await (const user of stream) {
|
|
695
|
+
console.log(user);
|
|
696
|
+
}
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
Using `.next()` for manual iteration:
|
|
545
700
|
```js
|
|
546
|
-
|
|
701
|
+
const stream = new DB('users').stream();
|
|
702
|
+
while (true) {
|
|
703
|
+
const result = await stream.next();
|
|
704
|
+
|
|
705
|
+
if (result.done) {
|
|
706
|
+
break;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
const user = result.value;
|
|
710
|
+
|
|
547
711
|
console.log(user);
|
|
548
712
|
}
|
|
549
713
|
```
|
|
714
|
+
## Session Statements
|
|
715
|
+
|
|
716
|
+
```js
|
|
717
|
+
await new DB()
|
|
718
|
+
.session()
|
|
719
|
+
.set('db1','session-1');
|
|
720
|
+
|
|
721
|
+
const get = await new DB()
|
|
722
|
+
.session()
|
|
723
|
+
.get('db1');
|
|
724
|
+
|
|
725
|
+
console.log(get) // session-1
|
|
726
|
+
|
|
727
|
+
await new DB()
|
|
728
|
+
.session()
|
|
729
|
+
.delete('db1');
|
|
730
|
+
|
|
731
|
+
// When using a cluster, session variables belong to the selected node.
|
|
732
|
+
await new DB()
|
|
733
|
+
.useNode('replica', { node : 1 }) // write to node1
|
|
734
|
+
.session()
|
|
735
|
+
.set('node1','session-node-1');
|
|
736
|
+
|
|
737
|
+
const getNode1 = await new DB()
|
|
738
|
+
.useNode('replica', { node : 1 })
|
|
739
|
+
.session()
|
|
740
|
+
.get('node1');
|
|
741
|
+
|
|
742
|
+
const getNode2 = await new DB()
|
|
743
|
+
.useNode('replica', { node : 2 })
|
|
744
|
+
.session()
|
|
745
|
+
.get('node1');
|
|
746
|
+
|
|
747
|
+
console.log(getNode1) // session-node-1
|
|
748
|
+
console.log(getNode2) // null
|
|
749
|
+
```
|
|
550
750
|
|
|
551
751
|
## Select Statements
|
|
552
752
|
|
|
@@ -966,12 +1166,13 @@ console.log(userHasPosts)
|
|
|
966
1166
|
|
|
967
1167
|
## Paginating
|
|
968
1168
|
|
|
1169
|
+
Using `Simple pagination`:
|
|
969
1170
|
```js
|
|
970
|
-
|
|
1171
|
+
await new DB("users").pagination();
|
|
971
1172
|
// SELECT * FROM `users` LIMIT 15 OFFSET 0;
|
|
972
1173
|
// SELECT COUNT(*) AS total FROM `users`;
|
|
973
1174
|
|
|
974
|
-
|
|
1175
|
+
await new DB("users").pagination({ page: 2, limit: 5 });
|
|
975
1176
|
|
|
976
1177
|
/*
|
|
977
1178
|
SELECT * FROM `users` LIMIT 5 OFFSET 5;
|
|
@@ -982,11 +1183,14 @@ const pageTwoUsers = await new DB("users").paginate({ page: 2, limit: 5 });
|
|
|
982
1183
|
meta: {
|
|
983
1184
|
total: n,
|
|
984
1185
|
limit: 5,
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
1186
|
+
page : {
|
|
1187
|
+
total: 5,
|
|
1188
|
+
current: 2,
|
|
1189
|
+
last: n,
|
|
1190
|
+
next: 3,
|
|
1191
|
+
prev: 1
|
|
1192
|
+
}
|
|
1193
|
+
|
|
990
1194
|
},
|
|
991
1195
|
data: [...your data here]
|
|
992
1196
|
}
|
|
@@ -994,6 +1198,32 @@ const pageTwoUsers = await new DB("users").paginate({ page: 2, limit: 5 });
|
|
|
994
1198
|
*/
|
|
995
1199
|
```
|
|
996
1200
|
|
|
1201
|
+
Using `Cursor pagination`:
|
|
1202
|
+
```js
|
|
1203
|
+
await new DB("users").cursorPagination();
|
|
1204
|
+
// SELECT * FROM `users` ORDER BY `users`.`id` ASC LIMIT 16;
|
|
1205
|
+
|
|
1206
|
+
await new DB("users").cursorPagination({ limit: 5 });
|
|
1207
|
+
// SELECT * FROM `users` ORDER BY `users`.`id` ASC LIMIT 6;
|
|
1208
|
+
|
|
1209
|
+
await new DB("users").cursorPagination({ limit: 5, cursor : "eyJp..." });
|
|
1210
|
+
// SELECT * FROM `users` WHERE `users`.`id` > 5 ORDER BY `users`.`id` ASC LIMIT 6;
|
|
1211
|
+
|
|
1212
|
+
/*
|
|
1213
|
+
the results are returned
|
|
1214
|
+
{
|
|
1215
|
+
meta: {
|
|
1216
|
+
limit: 5,
|
|
1217
|
+
count: 5,
|
|
1218
|
+
next: {
|
|
1219
|
+
cursor: 'eyJp...',
|
|
1220
|
+
has: true
|
|
1221
|
+
}
|
|
1222
|
+
},
|
|
1223
|
+
data: [...your data here]
|
|
1224
|
+
}
|
|
1225
|
+
```
|
|
1226
|
+
|
|
997
1227
|
## Insert Statements
|
|
998
1228
|
|
|
999
1229
|
```js
|
|
@@ -1323,6 +1553,54 @@ const users = await new DB('users')
|
|
|
1323
1553
|
|
|
1324
1554
|
```
|
|
1325
1555
|
|
|
1556
|
+
### Explain
|
|
1557
|
+
```js
|
|
1558
|
+
const { analysis } = await new DB('users')
|
|
1559
|
+
.select('*')
|
|
1560
|
+
.where('email','explain@gmail.com')
|
|
1561
|
+
.explain()
|
|
1562
|
+
|
|
1563
|
+
// EXPLAIN (SELECT * FROM `users` WHERE `users`.`email` = 'explain@gmail.com');
|
|
1564
|
+
// returned analysis
|
|
1565
|
+
{
|
|
1566
|
+
"status": "warning",
|
|
1567
|
+
"issues": [
|
|
1568
|
+
{
|
|
1569
|
+
"type": "FULL_SCAN",
|
|
1570
|
+
"severity": "warning",
|
|
1571
|
+
"message": "A full table scan was detected."
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"type": "NO_INDEX",
|
|
1575
|
+
"severity": "warning",
|
|
1576
|
+
"message": "No index was used for this operation."
|
|
1577
|
+
},
|
|
1578
|
+
{
|
|
1579
|
+
"type": "FILTER_AFTER_SCAN",
|
|
1580
|
+
"severity": "warning",
|
|
1581
|
+
"message": "Rows are filtered after scanning the table."
|
|
1582
|
+
}
|
|
1583
|
+
],
|
|
1584
|
+
"recommendations": [
|
|
1585
|
+
"Consider adding an appropriate index for the query conditions.",
|
|
1586
|
+
"Consider adding an index for the query conditions.",
|
|
1587
|
+
"Consider an index that can apply the filter earlier."
|
|
1588
|
+
]
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
// when you add index to email
|
|
1592
|
+
// returned analysis
|
|
1593
|
+
{
|
|
1594
|
+
"status": "ok",
|
|
1595
|
+
"issues": [],
|
|
1596
|
+
"recommendations": []
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
// send sql to analysis
|
|
1600
|
+
const { analysis } = await new DB()
|
|
1601
|
+
.explain("SELECT * FROM `users` WHERE `users`.`email` LIKE '%explain@gmail.com%'")
|
|
1602
|
+
|
|
1603
|
+
```
|
|
1326
1604
|
## More Methods
|
|
1327
1605
|
|
|
1328
1606
|
```js
|
|
@@ -1547,7 +1825,7 @@ try {
|
|
|
1547
1825
|
name: `tspace`,
|
|
1548
1826
|
email: "tspace@example.com",
|
|
1549
1827
|
})
|
|
1550
|
-
.bind(trx) //
|
|
1828
|
+
.bind(trx) // Don't forget to bind the transaction
|
|
1551
1829
|
.save();
|
|
1552
1830
|
|
|
1553
1831
|
const posts = await new Post()
|
|
@@ -1855,45 +2133,25 @@ const users = await new DB('users')
|
|
|
1855
2133
|
To backup a database, you can perform the following steps:
|
|
1856
2134
|
|
|
1857
2135
|
```js
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
database: 'try-to-backup', // clone current database to this database
|
|
1865
|
-
to ?: {
|
|
1866
|
-
host: 'localhost',
|
|
1867
|
-
port : 3306,
|
|
1868
|
-
username: 'username',
|
|
1869
|
-
password: 'password',
|
|
1870
|
-
}
|
|
1871
|
-
})
|
|
1872
|
-
/**
|
|
1873
|
-
*
|
|
1874
|
-
* @param {string} database Database selected
|
|
1875
|
-
* @param {string} filePath file path
|
|
1876
|
-
* @param {object | null} conection defalut current connection
|
|
1877
|
-
*/
|
|
1878
|
-
const backupToFile = await new DB().backupToFile({
|
|
1879
|
-
database: 'try-to-backup',
|
|
1880
|
-
filePath: 'backup.sql',
|
|
1881
|
-
connection ?: {
|
|
2136
|
+
await new DB().clone({
|
|
2137
|
+
database: 'try-to-backup', // clone current database to new database name
|
|
2138
|
+
// Options dump value
|
|
2139
|
+
value : true,
|
|
2140
|
+
// options Can you clone current database to other server with new database
|
|
2141
|
+
to : {
|
|
1882
2142
|
host: 'localhost',
|
|
1883
2143
|
port : 3306,
|
|
1884
|
-
database: 'database'
|
|
1885
2144
|
username: 'username',
|
|
1886
2145
|
password: 'password',
|
|
1887
2146
|
}
|
|
1888
2147
|
})
|
|
1889
|
-
// backupToFile => backup.sql
|
|
1890
|
-
|
|
1891
|
-
/**
|
|
1892
|
-
*
|
|
1893
|
-
* @param {string} database new db name
|
|
1894
|
-
*/
|
|
1895
|
-
await new DB().cloneDB('try-to-clone')
|
|
1896
2148
|
|
|
2149
|
+
await new DB().dump({
|
|
2150
|
+
database: 'try-to-dump',
|
|
2151
|
+
filePath: 'dump.sql',
|
|
2152
|
+
// Options dump value
|
|
2153
|
+
value : true
|
|
2154
|
+
})
|
|
1897
2155
|
```
|
|
1898
2156
|
|
|
1899
2157
|
## Injection
|
|
@@ -4239,6 +4497,8 @@ for(let j = 1; j <= worker * 500; j++) {
|
|
|
4239
4497
|
email: `John-${i}@gmail.com`,
|
|
4240
4498
|
name: `John-${i}`
|
|
4241
4499
|
}, {
|
|
4500
|
+
// Prevent duplicate jobs when triggered by cron jobs.
|
|
4501
|
+
// uniqueKey : `uq:${i}`,
|
|
4242
4502
|
delayMs : 1000 * Math.random() * 10,
|
|
4243
4503
|
priority : i % 2 ? 9999 + Math.floor((Math.random() * 9999) + 1) : 0,
|
|
4244
4504
|
maxAttempts : 3,
|
|
@@ -4711,9 +4971,7 @@ tspace-mysql query "SELECT * FROM users"
|
|
|
4711
4971
|
The command will dump the database or table into a file.
|
|
4712
4972
|
|
|
4713
4973
|
```sh
|
|
4714
|
-
tspace-mysql dump:db --dir=<folder for dump>
|
|
4715
|
-
|
|
4716
|
-
tspace-mysql dump:table "table_name" --dir=<folder for dump> --values // backup with values in the table
|
|
4974
|
+
tspace-mysql dump:db --dir=<folder for dump> // backup
|
|
4717
4975
|
|
|
4718
4976
|
```
|
|
4719
4977
|
|
package/dist/cli/dump/db.js
CHANGED
|
@@ -20,25 +20,13 @@ exports.default = (cmd) => {
|
|
|
20
20
|
console.log(`Example tspace-mysql dump:db "table" --dir=app/table`);
|
|
21
21
|
process.exit(0);
|
|
22
22
|
}
|
|
23
|
-
if (!values) {
|
|
24
|
-
const directory = `${cwd}/${dir}/dump-schema_${+new Date()}.sql`;
|
|
25
|
-
new lib_1.DB()
|
|
26
|
-
.loadEnv(env)
|
|
27
|
-
.backupSchemaToFile({
|
|
28
|
-
filePath: directory,
|
|
29
|
-
database: database
|
|
30
|
-
})
|
|
31
|
-
.then(r => console.log(`dump database file successfully`))
|
|
32
|
-
.catch(err => console.log(err))
|
|
33
|
-
.finally(() => process.exit(0));
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
23
|
const directory = `${cwd}/${dir}/dump_${+new Date()}.sql`;
|
|
37
24
|
new lib_1.DB()
|
|
38
25
|
.loadEnv(env)
|
|
39
|
-
.
|
|
26
|
+
.dump({
|
|
40
27
|
filePath: directory,
|
|
41
|
-
database: database
|
|
28
|
+
database: database,
|
|
29
|
+
value: Boolean(values === true || values === 'true')
|
|
42
30
|
})
|
|
43
31
|
.then(r => console.log(`dump database file successfully`))
|
|
44
32
|
.catch(err => console.log(err))
|
package/dist/cli/dump/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/cli/dump/db.ts"],"names":[],"mappings":";;AAAA,mCAA8B;AAE9B,kBAAe,CAAC,GAA0B,EAAE,EAAE;IAC5C,IAAI,EACF,GAAG,EACH,GAAG,EACH,EAAE,EACF,MAAM,EACN,GAAG,EACJ,GAAG,GAAG,CAAA;IAEL,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IAEtC,IAAG,GAAG,IAAI,IAAI;QAAE,GAAG,GAAG,MAAM,CAAA;IAC5B,IAAI,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE;YAC1B,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;IACN,CAAC;IAED,IAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/cli/dump/db.ts"],"names":[],"mappings":";;AAAA,mCAA8B;AAE9B,kBAAe,CAAC,GAA0B,EAAE,EAAE;IAC5C,IAAI,EACF,GAAG,EACH,GAAG,EACH,EAAE,EACF,MAAM,EACN,GAAG,EACJ,GAAG,GAAG,CAAA;IAEL,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IAEtC,IAAG,GAAG,IAAI,IAAI;QAAE,GAAG,GAAG,MAAM,CAAA;IAC5B,IAAI,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACpC,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE;YAC1B,SAAS,EAAE,IAAI;SAClB,CAAC,CAAA;IACN,CAAC;IAED,IAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,MAAM,CAAA;IACzD,IAAI,QAAE,EAAE;SACP,OAAO,CAAC,GAAG,CAAC;SACZ,IAAI,CAAC;QACF,QAAQ,EAAG,SAAS;QACpB,QAAQ,EAAG,QAAQ;QACnB,KAAK,EAAM,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC;KAC3D,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAC1D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC9B,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC,CAAA"}
|
package/dist/cli/index.js
CHANGED
|
@@ -13,7 +13,6 @@ const make_model_1 = __importDefault(require("./migrations/make-model"));
|
|
|
13
13
|
const make_db_1 = __importDefault(require("./migrations/make-db"));
|
|
14
14
|
const query_1 = __importDefault(require("./query"));
|
|
15
15
|
const db_1 = __importDefault(require("./dump/db"));
|
|
16
|
-
const table_1 = __importDefault(require("./dump/table"));
|
|
17
16
|
const help = () => {
|
|
18
17
|
console.log(`
|
|
19
18
|
\x1b[31m
|
|
@@ -24,7 +23,6 @@ const help = () => {
|
|
|
24
23
|
tspace-mysql generate:models --dir=app/Models --env=development
|
|
25
24
|
tspace-mysql generate:models --dir=app/Models --env=development --decorators
|
|
26
25
|
tspace-mysql dump:db "database" --dir=app/db --v --env=development
|
|
27
|
-
tspace-mysql dump:table "table" --dir=app/table --v --env=development
|
|
28
26
|
tspace-mysql migrations:models --dir=migrations --models=src/models --generate
|
|
29
27
|
tspace-mysql migrations:models --dir=migrations --models=src/models --push
|
|
30
28
|
tspace-mysql migrations:db --dir=migrations --generate --db=new-db
|
|
@@ -42,7 +40,6 @@ const commands = {
|
|
|
42
40
|
'generate:models': make_4.default,
|
|
43
41
|
'gen:models': make_4.default,
|
|
44
42
|
'dump:db': db_1.default,
|
|
45
|
-
'dump:table': table_1.default,
|
|
46
43
|
'migrations:models': make_model_1.default,
|
|
47
44
|
'migrations:db': make_db_1.default,
|
|
48
45
|
'help': () => help(),
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AACA,4CAAmB;AACnB,yDAAqC;AACrC,yDAAqC;AACrC,0DAAwC;AACxC,2DAA2C;AAC3C,yEAAoD;AACpD,mEAA8C;AAC9C,oDAA2B;AAC3B,mDAA8B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,7 +91,7 @@ exports.default = (cmd) => {
|
|
|
91
91
|
const directory = `${cwd}/${dir}/${filename ?? 'migrations.sql'}`;
|
|
92
92
|
new lib_1.DB()
|
|
93
93
|
.loadEnv(env)
|
|
94
|
-
.
|
|
94
|
+
.dump({
|
|
95
95
|
filePath: directory
|
|
96
96
|
})
|
|
97
97
|
.then(_ => console.log(`Migrations are migrating successfully`))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-db.js","sourceRoot":"","sources":["../../../src/cli/migrations/make-db.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"make-db.js","sourceRoot":"","sources":["../../../src/cli/migrations/make-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const lib_1 = require("../../lib");
|
|
40
40
|
const child_process_1 = require("child_process");
|
|
41
|
-
const sql_formatter_1 = require("sql-formatter");
|
|
42
41
|
const path_1 = __importDefault(require("path"));
|
|
43
42
|
exports.default = (cmd) => {
|
|
44
43
|
const { dir, cwd, fs, generate, push, models, env, filename } = cmd;
|
|
@@ -122,11 +121,7 @@ exports.default = (cmd) => {
|
|
|
122
121
|
}
|
|
123
122
|
let sql = [
|
|
124
123
|
`${createTableQueries.map(c => {
|
|
125
|
-
return
|
|
126
|
-
language: 'spark',
|
|
127
|
-
tabWidth: 2,
|
|
128
|
-
linesBetweenQueries: 1,
|
|
129
|
-
}) + ";";
|
|
124
|
+
return `${c};`;
|
|
130
125
|
}).join('\n\n')}\n`,
|
|
131
126
|
`${foreignKeyQueries.map(f => `${f};`).join('\n')}`,
|
|
132
127
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-model.js","sourceRoot":"","sources":["../../../src/cli/migrations/make-model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAA6C;AAC7C,iDAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"make-model.js","sourceRoot":"","sources":["../../../src/cli/migrations/make-model.ts"],"names":[],"mappings":"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"}
|