tspace-mysql 1.9.3-beta.3 → 1.9.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -6
- package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +1 -0
- package/dist/lib/core/Abstracts/AbstractBuilder.js +1 -0
- package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
- package/dist/lib/core/Blueprint.d.ts +2 -2
- package/dist/lib/core/Builder.d.ts +1 -1
- package/dist/lib/core/Builder.js +14 -11
- package/dist/lib/core/Builder.js.map +1 -1
- package/dist/lib/core/DB.d.ts +137 -6
- package/dist/lib/core/DB.js +152 -29
- package/dist/lib/core/DB.js.map +1 -1
- package/dist/lib/core/Driver/index.d.ts +2 -1
- package/dist/lib/core/Driver/index.js +11 -0
- package/dist/lib/core/Driver/index.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbDriver.d.ts +4 -1
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js +21 -7
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +4 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js +8 -6
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mysql/MysqlDriver.d.ts +4 -1
- package/dist/lib/core/Driver/mysql/MysqlDriver.js +35 -7
- package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresDriver.d.ts +4 -1
- package/dist/lib/core/Driver/postgres/PostgresDriver.js +24 -8
- package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +4 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js +14 -6
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -1
- package/dist/lib/core/Model.d.ts +164 -1
- package/dist/lib/core/Model.js +177 -5
- package/dist/lib/core/Model.js.map +1 -1
- package/dist/lib/core/Pool.d.ts +1 -1
- package/dist/lib/core/Pool.js +10 -4
- package/dist/lib/core/Pool.js.map +1 -1
- package/dist/lib/core/Queue/index.d.ts +1 -1
- package/dist/lib/core/Queue/index.js +2 -1
- package/dist/lib/core/Queue/index.js.map +1 -1
- package/dist/lib/core/Queue/types.d.ts +3 -2
- package/dist/lib/core/Queue/worker.d.ts +2 -1
- package/dist/lib/core/Queue/worker.js +148 -63
- package/dist/lib/core/Queue/worker.js.map +1 -1
- package/dist/lib/core/Repository.js.map +1 -1
- package/dist/lib/core/Schema.d.ts +4 -4
- package/dist/lib/core/Schema.js +40 -14
- package/dist/lib/core/Schema.js.map +1 -1
- package/dist/lib/types/index.d.ts +5 -2
- package/dist/lib/utils/index.d.ts +4 -2
- package/dist/lib/utils/index.js +37 -5
- package/dist/lib/utils/index.js.map +1 -1
- package/package.json +3 -5
package/README.md
CHANGED
|
@@ -95,7 +95,8 @@ npm install -D typescript@5.9.3
|
|
|
95
95
|
- [Query Builder](#query-builder)
|
|
96
96
|
- [Table Name & Alias Name](#table-name--alias-name)
|
|
97
97
|
- [Returning Results](#returning-results)
|
|
98
|
-
- [Query
|
|
98
|
+
- [Query Statements](#query-statements)
|
|
99
|
+
- [Stream Statements](#stream-statements)
|
|
99
100
|
- [Select Statements](#select-statements)
|
|
100
101
|
- [Raw Expressions](#raw-expressions)
|
|
101
102
|
- [Ordering, Grouping, Limit and Offset](#ordering-grouping-limit-and-offset)
|
|
@@ -532,6 +533,19 @@ const query = await DB.query(
|
|
|
532
533
|
username : ['name1','name2']
|
|
533
534
|
})
|
|
534
535
|
// SELECT * FROM users WHERE id = '1' AND email IS NULL AND username in ('name1','name2');
|
|
536
|
+
|
|
537
|
+
const query = await DB.query(
|
|
538
|
+
"SELECT * FROM users WHERE id = ? AND email IS ? AND name IN ?",
|
|
539
|
+
[1,null,['name1','name2']]
|
|
540
|
+
)
|
|
541
|
+
// SELECT * FROM users WHERE id = '1' AND email IS NULL AND username in ('name1','name2');
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## Stream Statements
|
|
545
|
+
```js
|
|
546
|
+
for await (const user of DB.stream("SELECT * FROM users")) {
|
|
547
|
+
console.log(user);
|
|
548
|
+
}
|
|
535
549
|
```
|
|
536
550
|
|
|
537
551
|
## Select Statements
|
|
@@ -3276,10 +3290,11 @@ class Post extends Model {
|
|
|
3276
3290
|
id: Blueprint.int().notNull().primary().autoIncrement(),
|
|
3277
3291
|
uuid: Blueprint.varchar(50).null(),
|
|
3278
3292
|
user_id: Blueprint.int().notNull().foreign({
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3293
|
+
on: () => User, // or "users"
|
|
3294
|
+
// Optionals
|
|
3295
|
+
references: "id", // default "id"
|
|
3296
|
+
onDelete: "CASCADE", // default "CASCADE"
|
|
3297
|
+
onUpdate: "CASCADE", // default "CASCADE"
|
|
3283
3298
|
}),
|
|
3284
3299
|
title: Blueprint.varchar(255).null(),
|
|
3285
3300
|
created_at: Blueprint.timestamp().null(),
|
|
@@ -4200,7 +4215,7 @@ await Queue.start({
|
|
|
4200
4215
|
maxIdleRetries : 8, // @default 5, maximum retries when no jobs are available
|
|
4201
4216
|
poll : {
|
|
4202
4217
|
enabled : true, // @default false, enable periodic job checking
|
|
4203
|
-
|
|
4218
|
+
interval : 10_000 // @default 60_000, polling interval
|
|
4204
4219
|
};
|
|
4205
4220
|
});
|
|
4206
4221
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractBuilder.js","sourceRoot":"","sources":["../../../../src/lib/core/Abstracts/AbstractBuilder.ts"],"names":[],"mappings":";;;AAGA,yCAA4C;AAO5C,MAAe,eAAe;IAEhB,MAAM,CAAU;IAEhB,SAAS,GAAY,MAAM,CAAC,eAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEnD,YAAY,GAAG;QACrB,IAAI,EAAO,eAAM,CAAC,IAAI;QACtB,IAAI,EAAO,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC;QAC9B,QAAQ,EAAG,MAAM,CAAC,eAAM,CAAC,QAAQ,CAAC;QAClC,QAAQ,EAAG,MAAM,CAAC,eAAM,CAAC,QAAQ,CAAC;QAClC,QAAQ,EAAG,eAAM,CAAC,QAAQ;KAC7B,CAAA;IAES,OAAO,GAAI,MAAM,CAAC,eAAM,CAAC,MAAM,IAAI,OAAO,CAAY,CAAC;IAEvD,QAAQ,GAAa,OAAO,CAAC,eAAM,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAEtD,UAAU,CAGlB;IAEQ,MAAM,CAAgB;IAEtB,KAAK,
|
|
1
|
+
{"version":3,"file":"AbstractBuilder.js","sourceRoot":"","sources":["../../../../src/lib/core/Abstracts/AbstractBuilder.ts"],"names":[],"mappings":";;;AAGA,yCAA4C;AAO5C,MAAe,eAAe;IAEhB,MAAM,CAAU;IAEhB,SAAS,GAAY,MAAM,CAAC,eAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEnD,YAAY,GAAG;QACrB,IAAI,EAAO,eAAM,CAAC,IAAI;QACtB,IAAI,EAAO,MAAM,CAAC,eAAM,CAAC,IAAI,CAAC;QAC9B,QAAQ,EAAG,MAAM,CAAC,eAAM,CAAC,QAAQ,CAAC;QAClC,QAAQ,EAAG,MAAM,CAAC,eAAM,CAAC,QAAQ,CAAC;QAClC,QAAQ,EAAG,eAAM,CAAC,QAAQ;KAC7B,CAAA;IAES,OAAO,GAAI,MAAM,CAAC,eAAM,CAAC,MAAM,IAAI,OAAO,CAAY,CAAC;IAEvD,QAAQ,GAAa,OAAO,CAAC,eAAM,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;IAEtD,UAAU,CAGlB;IAEQ,MAAM,CAAgB;IAEtB,KAAK,GAOX;QACA,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,GAAE,CAAC;QAC1B,GAAG,EAAE,CAAC,IAAU,EAAE,EAAE,GAAE,CAAC;QACvB,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;QACb,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;QACtB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;QACrB,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,GAAE,CAAC;KAC9B,CAAA;CAwFJ;AAES,0CAAe;AACzB,kBAAe,eAAe,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { T } from "./UtilityTypes";
|
|
2
2
|
import { Model } from "./Model";
|
|
3
3
|
type ExtendType = NumberConstructor | StringConstructor | BooleanConstructor | DateConstructor | readonly ExtendType[] | {
|
|
4
4
|
[_: string]: ExtendType;
|
|
@@ -478,7 +478,7 @@ declare class Blueprint<T = any> {
|
|
|
478
478
|
*/
|
|
479
479
|
foreign({ references, on, onDelete, onUpdate, }: {
|
|
480
480
|
references?: string;
|
|
481
|
-
on: (new () => Model) | string;
|
|
481
|
+
on: (() => new () => Model) | string;
|
|
482
482
|
onDelete?: "CASCADE" | "NO ACTION" | "RESTRICT" | "SET NULL";
|
|
483
483
|
onUpdate?: "CASCADE" | "NO ACTION" | "RESTRICT" | "SET NULL";
|
|
484
484
|
}): Blueprint<T>;
|
|
@@ -1494,7 +1494,7 @@ declare class Builder<TA extends TAction = null> extends AbstractBuilder {
|
|
|
1494
1494
|
* @param {Function} func function for callback result
|
|
1495
1495
|
* @returns {this}
|
|
1496
1496
|
*/
|
|
1497
|
-
hook(func:
|
|
1497
|
+
hook(func: (results: any) => void): this;
|
|
1498
1498
|
/**
|
|
1499
1499
|
* The 'before' method is used function when execute returns a result to callback function
|
|
1500
1500
|
* @param {Function} func function for callback result
|
package/dist/lib/core/Builder.js
CHANGED
|
@@ -2036,7 +2036,7 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
2036
2036
|
columns[key] = `( ${updateColumns[key].join(" ")} )`;
|
|
2037
2037
|
}
|
|
2038
2038
|
const keyValue = Object.entries(columns).map(([column, value]) => {
|
|
2039
|
-
value = this.$utils.
|
|
2039
|
+
value = this.$utils.escapePayload(value);
|
|
2040
2040
|
return `${this.bindColumn(column)} = ${value == null || value === this.$constants("NULL")
|
|
2041
2041
|
? this.$constants("NULL")
|
|
2042
2042
|
: typeof value === "string" && value.includes(this.$constants("RAW"))
|
|
@@ -4043,7 +4043,7 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
4043
4043
|
_queryUpdate(data) {
|
|
4044
4044
|
this.$utils.transfromDateToDateString(data);
|
|
4045
4045
|
const values = Object.entries(data).map(([column, value]) => {
|
|
4046
|
-
value = this.$utils.
|
|
4046
|
+
value = this.$utils.escapePayload(value);
|
|
4047
4047
|
return `${this.bindColumn(column)} = ${value == null || value === this.$constants("NULL")
|
|
4048
4048
|
? this.$constants("NULL")
|
|
4049
4049
|
: this.$utils.transfromValueHasRaw(value)}`;
|
|
@@ -4055,7 +4055,7 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
4055
4055
|
data = this.$utils.transfromDateToDateString(data);
|
|
4056
4056
|
const columns = Object.keys(data).map((c) => `\`${c.replace(/\`/g, "")}\``);
|
|
4057
4057
|
const values = Object.values(data).map((value) => {
|
|
4058
|
-
value = this.$utils.
|
|
4058
|
+
value = this.$utils.escapePayload(value);
|
|
4059
4059
|
if (this.$utils.typeOf(value) === "object" ||
|
|
4060
4060
|
this.$utils.typeOf(value) === "array") {
|
|
4061
4061
|
value = JSON.stringify(value);
|
|
@@ -4075,7 +4075,7 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
4075
4075
|
for (let objects of data) {
|
|
4076
4076
|
this.$utils.transfromDateToDateString(objects);
|
|
4077
4077
|
const vals = Object.values(objects).map((value) => {
|
|
4078
|
-
value = this.$utils.
|
|
4078
|
+
value = this.$utils.escapePayload(value);
|
|
4079
4079
|
if (this.$utils.typeOf(value) === "object" ||
|
|
4080
4080
|
this.$utils.typeOf(value) === "array") {
|
|
4081
4081
|
value = JSON.stringify(value);
|
|
@@ -4141,17 +4141,14 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
4141
4141
|
return {
|
|
4142
4142
|
query: async (sql) => {
|
|
4143
4143
|
const first = sql.trim().split(/\s+/)[0].toUpperCase();
|
|
4144
|
+
const isRowLock = Object.values(this.$constants("ROW_LEVEL_LOCK")).some(lock => sql.toUpperCase().includes(lock));
|
|
4145
|
+
// Row-level locked SELECTs (e.g. FOR UPDATE, FOR SHARE) acquire database locks,
|
|
4146
|
+
// so they are not considered read-only queries and should be handled as write/locking operations.
|
|
4144
4147
|
const isReaded = [
|
|
4145
4148
|
this.$constants("SELECT"),
|
|
4146
4149
|
this.$constants("SHOW"),
|
|
4147
4150
|
this.$constants("DESCRIBE")
|
|
4148
|
-
].includes(first) &&
|
|
4149
|
-
(!sql
|
|
4150
|
-
.toUpperCase()
|
|
4151
|
-
.includes(this.$constants("ROW_LEVEL_LOCK").update) ||
|
|
4152
|
-
!sql
|
|
4153
|
-
.toUpperCase()
|
|
4154
|
-
.includes(this.$constants("ROW_LEVEL_LOCK").share));
|
|
4151
|
+
].includes(first) && !isRowLock;
|
|
4155
4152
|
if (isReaded) {
|
|
4156
4153
|
const length = poolCluster?.slaves?.length ?? 0;
|
|
4157
4154
|
const random = Math.floor(Math.random() * length);
|
|
@@ -4185,10 +4182,16 @@ class Builder extends AbstractBuilder_1.AbstractBuilder {
|
|
|
4185
4182
|
transaction: async () => {
|
|
4186
4183
|
return await poolCluster.masters[0].connection();
|
|
4187
4184
|
},
|
|
4185
|
+
stream: async (sql) => {
|
|
4186
|
+
return await poolCluster.masters[0].stream(sql);
|
|
4187
|
+
},
|
|
4188
4188
|
};
|
|
4189
4189
|
}
|
|
4190
4190
|
let pool = Pool_1.Pool.connect();
|
|
4191
4191
|
return {
|
|
4192
|
+
stream: async (sql) => {
|
|
4193
|
+
return await pool.stream(sql);
|
|
4194
|
+
},
|
|
4192
4195
|
transaction: async () => {
|
|
4193
4196
|
return await pool.connection();
|
|
4194
4197
|
},
|