tspace-mysql 1.9.0 → 1.9.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 +4357 -133
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.js +24 -16
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/constants/index.d.ts +10 -1
- package/dist/lib/constants/index.js +11 -2
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +11 -7
- package/dist/lib/core/Abstracts/AbstractBuilder.js +11 -13
- package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractDB.d.ts +4 -1
- package/dist/lib/core/Abstracts/AbstractDB.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractView.js.map +1 -1
- package/dist/lib/core/Blueprint.d.ts +30 -10
- package/dist/lib/core/Blueprint.js +39 -14
- package/dist/lib/core/Blueprint.js.map +1 -1
- package/dist/lib/core/Builder.d.ts +263 -9
- package/dist/lib/core/Builder.js +610 -347
- package/dist/lib/core/Builder.js.map +1 -1
- package/dist/lib/core/Cache/DBCache.js +19 -20
- package/dist/lib/core/Cache/DBCache.js.map +1 -1
- package/dist/lib/core/Cache/MemoryCache.js +3 -3
- package/dist/lib/core/Cache/MemoryCache.js.map +1 -1
- package/dist/lib/core/Cache/RedisCache.js +27 -17
- package/dist/lib/core/Cache/RedisCache.js.map +1 -1
- package/dist/lib/core/Cache/index.js +5 -4
- package/dist/lib/core/Cache/index.js.map +1 -1
- package/dist/lib/core/Contracts/AlterTable.d.ts +152 -0
- package/dist/lib/core/Contracts/AlterTable.js +243 -0
- package/dist/lib/core/Contracts/AlterTable.js.map +1 -0
- package/dist/lib/core/Contracts/Audit.js +2 -5
- package/dist/lib/core/Contracts/Audit.js.map +1 -1
- package/dist/lib/core/DB.d.ts +101 -9
- package/dist/lib/core/DB.js +168 -29
- package/dist/lib/core/DB.js.map +1 -1
- package/dist/lib/core/Decorator.d.ts +144 -16
- package/dist/lib/core/Decorator.js +156 -14
- package/dist/lib/core/Decorator.js.map +1 -1
- package/dist/lib/core/Driver/index.d.ts +43 -9
- package/dist/lib/core/Driver/index.js +9 -7
- package/dist/lib/core/Driver/index.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js +74 -27
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.d.ts +45 -9
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js +165 -21
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +24 -0
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js +255 -0
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.d.ts +141 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js +563 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js.map +1 -0
- package/dist/lib/core/Driver/mysql/MysqlDriver.js +105 -95
- package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.d.ts +45 -9
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js +165 -21
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresDriver.js +97 -72
- package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.d.ts +50 -9
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js +296 -41
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +20 -0
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js +192 -0
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.d.ts +144 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js +689 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js.map +1 -0
- package/dist/lib/core/JoinModel.js +2 -2
- package/dist/lib/core/JoinModel.js.map +1 -1
- package/dist/lib/core/Meta.d.ts +17 -11
- package/dist/lib/core/Meta.js +25 -19
- package/dist/lib/core/Meta.js.map +1 -1
- package/dist/lib/core/Model.d.ts +450 -108
- package/dist/lib/core/Model.js +1031 -587
- package/dist/lib/core/Model.js.map +1 -1
- package/dist/lib/{tools/index.d.ts → core/Package.d.ts} +11 -3
- package/dist/lib/{tools/index.js → core/Package.js} +20 -7
- package/dist/lib/core/Package.js.map +1 -0
- package/dist/lib/core/Pool.js +42 -30
- package/dist/lib/core/Pool.js.map +1 -1
- package/dist/lib/core/Queue.d.ts +240 -0
- package/dist/lib/core/Queue.js +686 -0
- package/dist/lib/core/Queue.js.map +1 -0
- package/dist/lib/core/RelationManager.js +27 -25
- package/dist/lib/core/RelationManager.js.map +1 -1
- package/dist/lib/core/Repository.d.ts +73 -207
- package/dist/lib/core/Repository.js +120 -235
- package/dist/lib/core/Repository.js.map +1 -1
- package/dist/lib/core/Schema.d.ts +218 -0
- package/dist/lib/core/Schema.js +370 -65
- package/dist/lib/core/Schema.js.map +1 -1
- package/dist/lib/core/StateManager.d.ts +25 -12
- package/dist/lib/core/StateManager.js +10 -5
- package/dist/lib/core/StateManager.js.map +1 -1
- package/dist/lib/core/UtilityTypes.d.ts +85 -56
- package/dist/lib/core/UtilityTypes.js.map +1 -1
- package/dist/lib/core/index.d.ts +4 -0
- package/dist/lib/core/index.js +6 -2
- package/dist/lib/core/index.js.map +1 -1
- package/dist/lib/types/decorator/index.d.ts +1 -1
- package/dist/lib/types/index.d.ts +69 -22
- package/dist/lib/types/repository/index.d.ts +68 -37
- package/dist/lib/utils/index.d.ts +11 -1
- package/dist/lib/utils/index.js +58 -2
- package/dist/lib/utils/index.js.map +1 -1
- package/package.json +14 -6
- package/dist/lib/tools/index.js.map +0 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.MysqlDriver = void 0;
|
|
7
|
+
const mysql2_1 = __importDefault(require("mysql2"));
|
|
4
8
|
const __1 = require("..");
|
|
5
9
|
const MysqlQueryBuilder_1 = require("./MysqlQueryBuilder");
|
|
6
10
|
class MysqlDriver extends __1.BaseDriver {
|
|
@@ -10,8 +14,7 @@ class MysqlDriver extends __1.BaseDriver {
|
|
|
10
14
|
}
|
|
11
15
|
connect() {
|
|
12
16
|
const options = this.options;
|
|
13
|
-
const
|
|
14
|
-
this.pool = mysql.createPool({
|
|
17
|
+
const configs = {
|
|
15
18
|
host: options.host,
|
|
16
19
|
port: options.port,
|
|
17
20
|
database: options.database,
|
|
@@ -27,32 +30,36 @@ class MysqlDriver extends __1.BaseDriver {
|
|
|
27
30
|
maxIdle: Math.max(2, Math.floor((options.connectionLimit ?? 20) / 3)),
|
|
28
31
|
idleTimeout: 1000 * 60,
|
|
29
32
|
charset: 'utf8mb4',
|
|
33
|
+
};
|
|
34
|
+
this.pool = mysql2_1.default.createPool(configs);
|
|
35
|
+
this.poolTrx = mysql2_1.default.createPool({
|
|
36
|
+
...configs,
|
|
37
|
+
connectionLimit: configs.connectionLimit * 1.5
|
|
30
38
|
});
|
|
31
|
-
this.pool.getConnection((err
|
|
32
|
-
if (err)
|
|
33
|
-
const message = this._messageError.bind(this);
|
|
34
|
-
process.nextTick(() => {
|
|
35
|
-
if (String(err.message).includes('Pool is close')) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
console.log(message(err.message == null || err.message === '' ? err.code : err.message));
|
|
39
|
-
if (this.options.CONNECTION_ERROR)
|
|
40
|
-
return process.exit();
|
|
41
|
-
});
|
|
39
|
+
this.pool.getConnection((err) => {
|
|
40
|
+
if (!err)
|
|
42
41
|
return;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const message = [
|
|
50
|
-
results.find(v => v?.Variable_name === 'version'),
|
|
51
|
-
results.find(v => v?.Variable_name === 'version_comment')
|
|
52
|
-
].map(v => v?.Value).join(' - ');
|
|
53
|
-
console.log(this._messageConnected.bind(this)(`${message}`));
|
|
42
|
+
if (err?.message?.includes('Unknown database')) {
|
|
43
|
+
const db = mysql2_1.default.createConnection({
|
|
44
|
+
host: options.host,
|
|
45
|
+
port: options.port,
|
|
46
|
+
user: options.user || options.username,
|
|
47
|
+
password: options.password,
|
|
54
48
|
});
|
|
49
|
+
const sql = new MysqlQueryBuilder_1.MysqlQueryBuilder({}).createDatabase(options.database);
|
|
50
|
+
db.query(sql, () => db.end());
|
|
51
|
+
return;
|
|
55
52
|
}
|
|
53
|
+
const message = this._messageError.bind(this);
|
|
54
|
+
process.nextTick(() => {
|
|
55
|
+
if (String(err.message).includes('Pool is close')) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log(message(err.message == null || err.message === '' ? err.code : err.message));
|
|
59
|
+
if (this.options.CONNECTION_ERROR)
|
|
60
|
+
return process.exit();
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
56
63
|
});
|
|
57
64
|
this.pool.on("release", (connection) => {
|
|
58
65
|
this.emit("release", connection);
|
|
@@ -85,77 +92,80 @@ class MysqlDriver extends __1.BaseDriver {
|
|
|
85
92
|
});
|
|
86
93
|
});
|
|
87
94
|
}
|
|
88
|
-
_connection() {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
95
|
+
async _connection() {
|
|
96
|
+
const conn = await this.poolTrx.promise().getConnection();
|
|
97
|
+
let started = false;
|
|
98
|
+
let closed = false;
|
|
99
|
+
let commited = false;
|
|
100
|
+
let rollbacked = false;
|
|
101
|
+
const query = async (sql) => {
|
|
102
|
+
const start = Date.now();
|
|
103
|
+
const [results] = await conn.query(sql);
|
|
104
|
+
this._detectEventQuery({ start, sql });
|
|
105
|
+
this.meta(results, sql);
|
|
106
|
+
return this.returning(results);
|
|
107
|
+
};
|
|
108
|
+
const startTransaction = async () => {
|
|
109
|
+
await conn.beginTransaction();
|
|
110
|
+
started = true;
|
|
111
|
+
closed = false;
|
|
112
|
+
return;
|
|
113
|
+
};
|
|
114
|
+
const commit = async () => {
|
|
115
|
+
if (closed) {
|
|
116
|
+
throw new Error(this.MESSAGE_TRX_CLOSED);
|
|
117
|
+
}
|
|
118
|
+
if (!started) {
|
|
119
|
+
throw new Error(this.MESSAGE_TRX_NOT_STARTED);
|
|
120
|
+
}
|
|
121
|
+
commited = true;
|
|
122
|
+
await conn.commit();
|
|
123
|
+
await end();
|
|
124
|
+
return;
|
|
125
|
+
};
|
|
126
|
+
const rollback = async () => {
|
|
127
|
+
if (closed) {
|
|
128
|
+
throw new Error(this.MESSAGE_TRX_CLOSED);
|
|
129
|
+
}
|
|
130
|
+
if (!started) {
|
|
131
|
+
throw new Error(this.MESSAGE_TRX_NOT_STARTED);
|
|
132
|
+
}
|
|
133
|
+
rollbacked = true;
|
|
134
|
+
await conn.rollback();
|
|
135
|
+
await end();
|
|
136
|
+
return;
|
|
137
|
+
};
|
|
138
|
+
const end = async () => {
|
|
139
|
+
if (closed)
|
|
140
|
+
return;
|
|
141
|
+
if (!started) {
|
|
142
|
+
throw new Error(this.MESSAGE_TRX_NOT_STARTED);
|
|
143
|
+
}
|
|
144
|
+
if (!commited && !rollbacked) {
|
|
145
|
+
await rollback();
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
await conn.release();
|
|
149
|
+
started = false;
|
|
150
|
+
closed = true;
|
|
151
|
+
return;
|
|
152
|
+
};
|
|
153
|
+
const release = async () => {
|
|
154
|
+
if (closed)
|
|
155
|
+
return;
|
|
156
|
+
await conn.release();
|
|
157
|
+
return;
|
|
158
|
+
};
|
|
159
|
+
return {
|
|
160
|
+
on: (event, data) => this.on(event, data),
|
|
161
|
+
queryBuilder: MysqlQueryBuilder_1.MysqlQueryBuilder,
|
|
162
|
+
query,
|
|
163
|
+
startTransaction,
|
|
164
|
+
commit,
|
|
165
|
+
rollback,
|
|
166
|
+
end,
|
|
167
|
+
release
|
|
168
|
+
};
|
|
159
169
|
}
|
|
160
170
|
async _end() {
|
|
161
171
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MysqlDriver.js","sourceRoot":"","sources":["../../../../../src/lib/core/Driver/mysql/MysqlDriver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MysqlDriver.js","sourceRoot":"","sources":["../../../../../src/lib/core/Driver/mysql/MysqlDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,11 @@ export declare class MysqlQueryBuilder extends QueryBuilder {
|
|
|
17
17
|
table: string;
|
|
18
18
|
}): string;
|
|
19
19
|
getTables(database: string): string;
|
|
20
|
-
|
|
20
|
+
hasTable({ database, table }: {
|
|
21
21
|
database: string;
|
|
22
22
|
table: string;
|
|
23
23
|
}): string;
|
|
24
|
+
createDatabase(database: string): string;
|
|
24
25
|
createTable({ database, table, schema, }: {
|
|
25
26
|
database: string;
|
|
26
27
|
table: string;
|
|
@@ -52,7 +53,7 @@ export declare class MysqlQueryBuilder extends QueryBuilder {
|
|
|
52
53
|
table: string;
|
|
53
54
|
constraint: string;
|
|
54
55
|
}): string;
|
|
55
|
-
|
|
56
|
+
addFK({ table, tableRef, key, constraint, foreign, }: {
|
|
56
57
|
table: string;
|
|
57
58
|
tableRef: string;
|
|
58
59
|
key: string;
|
|
@@ -71,15 +72,44 @@ export declare class MysqlQueryBuilder extends QueryBuilder {
|
|
|
71
72
|
database: string;
|
|
72
73
|
table: string;
|
|
73
74
|
}): string;
|
|
74
|
-
hasIndex({ database, table,
|
|
75
|
+
hasIndex({ database, table, name, }: {
|
|
75
76
|
database: string;
|
|
76
77
|
table: string;
|
|
77
|
-
|
|
78
|
+
name: string;
|
|
78
79
|
}): string;
|
|
79
|
-
|
|
80
|
+
addIndex({ table, name, columns, }: {
|
|
81
|
+
table: string;
|
|
82
|
+
name: string;
|
|
83
|
+
columns: string[];
|
|
84
|
+
}): string;
|
|
85
|
+
dropIndex({ table, name, }: {
|
|
86
|
+
table: string;
|
|
87
|
+
name: string;
|
|
88
|
+
}): string;
|
|
89
|
+
hasUnique({ database, table, name, }: {
|
|
90
|
+
database: string;
|
|
91
|
+
table: string;
|
|
92
|
+
name: string;
|
|
93
|
+
}): string;
|
|
94
|
+
addUnique({ table, name, columns }: {
|
|
95
|
+
table: string;
|
|
96
|
+
name: string;
|
|
97
|
+
columns: string[];
|
|
98
|
+
}): string;
|
|
99
|
+
dropUnique({ table, name, }: {
|
|
100
|
+
table: string;
|
|
101
|
+
name: string;
|
|
102
|
+
}): string;
|
|
103
|
+
hasPrimaryKey({ database, table, }: {
|
|
104
|
+
database: string;
|
|
105
|
+
table: string;
|
|
106
|
+
}): string;
|
|
107
|
+
addPrimaryKey({ table, columns, }: {
|
|
108
|
+
table: string;
|
|
109
|
+
columns: string[];
|
|
110
|
+
}): string;
|
|
111
|
+
dropPrimaryKey({ table }: {
|
|
80
112
|
table: string;
|
|
81
|
-
index: string;
|
|
82
|
-
key: string;
|
|
83
113
|
}): string;
|
|
84
114
|
getDatabase(database: string): string;
|
|
85
115
|
dropDatabase(database: string): string;
|
|
@@ -88,8 +118,10 @@ export declare class MysqlQueryBuilder extends QueryBuilder {
|
|
|
88
118
|
truncate(table: string): string;
|
|
89
119
|
sleep(second: number): string;
|
|
90
120
|
format(sql: (string | null)[] | string): string;
|
|
121
|
+
getActiveConnections(): string;
|
|
122
|
+
getMaxConnections(): string;
|
|
91
123
|
protected bindJoin(values: string[]): string | null;
|
|
92
|
-
protected bindWhere(values:
|
|
124
|
+
protected bindWhere(values: any[]): string | null;
|
|
93
125
|
protected bindOrderBy(values: string[]): string | null;
|
|
94
126
|
protected bindGroupBy(values: string[]): string | null;
|
|
95
127
|
protected bindSelect(values: string[], { distinct }?: {
|
|
@@ -103,5 +135,9 @@ export declare class MysqlQueryBuilder extends QueryBuilder {
|
|
|
103
135
|
protected bindLimit(limit: string | number | null): string;
|
|
104
136
|
protected bindOffset(offset: string | number | null): string;
|
|
105
137
|
protected bindHaving(having: string | null): string;
|
|
106
|
-
protected bindRowLevelLock(
|
|
138
|
+
protected bindRowLevelLock(rowLevelLock: {
|
|
139
|
+
mode: "FOR_UPDATE" | "FOR_SHARE" | null;
|
|
140
|
+
skipLocked: boolean | null;
|
|
141
|
+
nowait: boolean | null;
|
|
142
|
+
}): any;
|
|
107
143
|
}
|
|
@@ -11,8 +11,8 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
11
11
|
this.bindSelect(this.$state.get("SELECT")),
|
|
12
12
|
this.bindFrom({
|
|
13
13
|
from: !this.$state.get("FROM").length
|
|
14
|
-
? [this.$state.get("TABLE_NAME")].map(String)
|
|
15
|
-
: [this.$state.get("TABLE_NAME"), ...this.$state.get("FROM")].map(String),
|
|
14
|
+
? [this.$state.get("TABLE_NAME")].filter(Boolean).map(String)
|
|
15
|
+
: [this.$state.get("TABLE_NAME"), ...this.$state.get("FROM")].filter(Boolean).map(String),
|
|
16
16
|
alias: this.$state.get("ALIAS"),
|
|
17
17
|
rawAlias: this.$state.get("RAW_ALIAS"),
|
|
18
18
|
}),
|
|
@@ -173,21 +173,24 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
173
173
|
];
|
|
174
174
|
return this.format(sql);
|
|
175
175
|
}
|
|
176
|
-
|
|
176
|
+
hasTable({ database, table }) {
|
|
177
177
|
const sql = [
|
|
178
|
-
`
|
|
179
|
-
SELECT
|
|
180
|
-
TABLE_NAME AS "Table"
|
|
178
|
+
`SELECT EXISTS(
|
|
179
|
+
SELECT 1
|
|
181
180
|
FROM
|
|
182
181
|
INFORMATION_SCHEMA.TABLES
|
|
183
182
|
WHERE
|
|
184
183
|
TABLE_SCHEMA = '${database.replace(/\`/g, "")}'
|
|
185
184
|
AND TABLE_NAME = '${table.replace(/\`/g, "")}'
|
|
186
185
|
AND TABLE_TYPE = 'BASE TABLE'
|
|
187
|
-
|
|
186
|
+
) AS "IS_EXISTS"`,
|
|
188
187
|
];
|
|
189
188
|
return this.format(sql);
|
|
190
189
|
}
|
|
190
|
+
createDatabase(database) {
|
|
191
|
+
const sql = `CREATE DATABASE IF NOT EXISTS \`${database}\``;
|
|
192
|
+
return this.format(sql);
|
|
193
|
+
}
|
|
191
194
|
createTable({ database, table, schema, }) {
|
|
192
195
|
let columns = [];
|
|
193
196
|
if (Array.isArray(schema)) {
|
|
@@ -303,7 +306,7 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
303
306
|
];
|
|
304
307
|
return this.format(sql);
|
|
305
308
|
}
|
|
306
|
-
|
|
309
|
+
addFK({ table, tableRef, key, constraint, foreign, }) {
|
|
307
310
|
const sql = [
|
|
308
311
|
`${this.$constants("ALTER_TABLE")}`,
|
|
309
312
|
`\`${table}\``,
|
|
@@ -350,7 +353,7 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
350
353
|
];
|
|
351
354
|
return this.format(sql);
|
|
352
355
|
}
|
|
353
|
-
hasIndex({ database, table,
|
|
356
|
+
hasIndex({ database, table, name, }) {
|
|
354
357
|
const sql = [
|
|
355
358
|
`
|
|
356
359
|
SELECT EXISTS(
|
|
@@ -368,18 +371,105 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
368
371
|
k.REFERENCED_TABLE_NAME IS NULL
|
|
369
372
|
AND s.TABLE_SCHEMA = '${database.replace(/`/g, "")}'
|
|
370
373
|
AND s.TABLE_NAME = '${table.replace(/`/g, "")}'
|
|
371
|
-
AND s.INDEX_NAME = '${
|
|
374
|
+
AND s.INDEX_NAME = '${name}'
|
|
372
375
|
) AS "IS_EXISTS"
|
|
373
376
|
`,
|
|
374
377
|
];
|
|
375
378
|
return this.format(sql);
|
|
376
379
|
}
|
|
377
|
-
|
|
380
|
+
addIndex({ table, name, columns, }) {
|
|
381
|
+
const cols = columns
|
|
382
|
+
.map(col => `\`${col}\``)
|
|
383
|
+
.join(", ");
|
|
384
|
+
const sql = [
|
|
385
|
+
this.$constants("ALTER_TABLE"),
|
|
386
|
+
`\`${table}\``,
|
|
387
|
+
this.$constants("ADD_INDEX"),
|
|
388
|
+
`\`${name}\``,
|
|
389
|
+
`(${cols})`
|
|
390
|
+
];
|
|
391
|
+
return this.format(sql);
|
|
392
|
+
}
|
|
393
|
+
dropIndex({ table, name, }) {
|
|
394
|
+
const sql = [
|
|
395
|
+
this.$constants("ALTER_TABLE"),
|
|
396
|
+
`\`${table}\``,
|
|
397
|
+
this.$constants("DROP"),
|
|
398
|
+
this.$constants("INDEX"),
|
|
399
|
+
`\`${name}\``
|
|
400
|
+
];
|
|
401
|
+
return this.format(sql);
|
|
402
|
+
}
|
|
403
|
+
hasUnique({ database, table, name, }) {
|
|
378
404
|
const sql = [
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
405
|
+
`
|
|
406
|
+
SELECT EXISTS(
|
|
407
|
+
SELECT
|
|
408
|
+
1
|
|
409
|
+
FROM
|
|
410
|
+
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
|
|
411
|
+
WHERE
|
|
412
|
+
TABLE_SCHEMA = '${database.replace(/`/g, "")}'
|
|
413
|
+
AND TABLE_NAME = '${table.replace(/`/g, "")}'
|
|
414
|
+
AND CONSTRAINT_TYPE = '${name}'
|
|
415
|
+
) AS "IS_EXISTS"
|
|
416
|
+
`,
|
|
417
|
+
];
|
|
418
|
+
return this.format(sql);
|
|
419
|
+
}
|
|
420
|
+
addUnique({ table, name, columns }) {
|
|
421
|
+
const cols = columns
|
|
422
|
+
.map(col => `\`${col}\``)
|
|
423
|
+
.join(", ");
|
|
424
|
+
const sql = [
|
|
425
|
+
this.$constants("ALTER_TABLE"),
|
|
426
|
+
`\`${table}\``,
|
|
427
|
+
this.$constants("ADD_CONSTRAINT"),
|
|
428
|
+
`\`${name}\``,
|
|
429
|
+
this.$constants("UNIQUE"),
|
|
430
|
+
`(${cols})`
|
|
431
|
+
];
|
|
432
|
+
return this.format(sql);
|
|
433
|
+
}
|
|
434
|
+
dropUnique({ table, name, }) {
|
|
435
|
+
const sql = [
|
|
436
|
+
this.$constants("ALTER_TABLE"),
|
|
437
|
+
`\`${table}\``,
|
|
438
|
+
this.$constants("DROP"),
|
|
439
|
+
this.$constants("INDEX"),
|
|
440
|
+
`\`${name}\``
|
|
441
|
+
];
|
|
442
|
+
return this.format(sql);
|
|
443
|
+
}
|
|
444
|
+
hasPrimaryKey({ database, table, }) {
|
|
445
|
+
const sql = `
|
|
446
|
+
SELECT EXISTS (
|
|
447
|
+
SELECT 1
|
|
448
|
+
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
|
|
449
|
+
WHERE
|
|
450
|
+
TABLE_SCHEMA = '${database.replace(/['"`]/g, "")}'
|
|
451
|
+
AND TABLE_NAME = '${table.replace(/['"`]/g, "")}'
|
|
452
|
+
AND CONSTRAINT_TYPE = '${this.$constants('PRIMARY_KEY')}'
|
|
453
|
+
) AS IS_EXISTS
|
|
454
|
+
`;
|
|
455
|
+
return this.format(sql);
|
|
456
|
+
}
|
|
457
|
+
addPrimaryKey({ table, columns, }) {
|
|
458
|
+
const cols = columns
|
|
459
|
+
.map(col => `\`${col}\``)
|
|
460
|
+
.join(", ");
|
|
461
|
+
const sql = `
|
|
462
|
+
${this.$constants('ALTER_TABLE')} \`${table}\`
|
|
463
|
+
${this.$constants('ADD')} ${this.$constants('PRIMARY_KEY')} (${cols})
|
|
464
|
+
`;
|
|
465
|
+
return this.format(sql);
|
|
466
|
+
}
|
|
467
|
+
dropPrimaryKey({ table }) {
|
|
468
|
+
const sql = [
|
|
469
|
+
this.$constants("ALTER_TABLE"),
|
|
470
|
+
`\`${table}\``,
|
|
471
|
+
this.$constants("DROP"),
|
|
472
|
+
this.$constants("PRIMARY_KEY")
|
|
383
473
|
];
|
|
384
474
|
return this.format(sql);
|
|
385
475
|
}
|
|
@@ -430,6 +520,21 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
430
520
|
.join(" ")
|
|
431
521
|
.replace(/\s+/g, " ");
|
|
432
522
|
}
|
|
523
|
+
getActiveConnections() {
|
|
524
|
+
const sql = `
|
|
525
|
+
SELECT
|
|
526
|
+
VARIABLE_VALUE AS Connections
|
|
527
|
+
FROM
|
|
528
|
+
PERFORMANCE_SCHEMA.GLOBAL_STATUS
|
|
529
|
+
WHERE
|
|
530
|
+
VARIABLE_NAME = 'Threads_connected'
|
|
531
|
+
`;
|
|
532
|
+
return this.format(sql);
|
|
533
|
+
}
|
|
534
|
+
getMaxConnections() {
|
|
535
|
+
const sql = `SELECT @@max_connections AS MaxConnections;`;
|
|
536
|
+
return this.format(sql);
|
|
537
|
+
}
|
|
433
538
|
bindJoin(values) {
|
|
434
539
|
if (!Array.isArray(values) || !values.length)
|
|
435
540
|
return null;
|
|
@@ -438,9 +543,42 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
438
543
|
bindWhere(values) {
|
|
439
544
|
if (!Array.isArray(values) || !values.length)
|
|
440
545
|
return null;
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
546
|
+
const serializeWhere = (wheres) => {
|
|
547
|
+
const resolveValue = ({ operator, value }) => {
|
|
548
|
+
let valueStr = '';
|
|
549
|
+
if (operator?.toUpperCase() === this.$constants('IN') && Array.isArray(value)) {
|
|
550
|
+
valueStr = `(${value.map((v) => v).join(',')})`;
|
|
551
|
+
}
|
|
552
|
+
else if (operator?.toUpperCase() === this.$constants('IS_NULL') ||
|
|
553
|
+
operator?.toUpperCase() === this.$constants('IS_NOT_NULL')) {
|
|
554
|
+
valueStr = '';
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
valueStr = `${value}`;
|
|
558
|
+
}
|
|
559
|
+
return valueStr;
|
|
560
|
+
};
|
|
561
|
+
const conditionToSQL = (cond, isFirst = false) => {
|
|
562
|
+
const { column = '', operator = '', condition, value, nested } = cond;
|
|
563
|
+
if (nested && nested.length) {
|
|
564
|
+
const nestedSQL = nested
|
|
565
|
+
.map((c) => conditionToSQL(c))
|
|
566
|
+
.join(' ');
|
|
567
|
+
const valueStr = resolveValue({ operator, value });
|
|
568
|
+
if (!isFirst) {
|
|
569
|
+
return `${condition ?? this.$constants('AND')} (${column} ${operator} ${valueStr} ${nestedSQL})`;
|
|
570
|
+
}
|
|
571
|
+
return `(${column} ${operator} ${valueStr} ${nestedSQL})`;
|
|
572
|
+
}
|
|
573
|
+
const valueStr = resolveValue({ operator, value });
|
|
574
|
+
if (!isFirst) {
|
|
575
|
+
return `${condition ?? this.$constants('AND')} ${column} ${operator} ${valueStr}`.trim();
|
|
576
|
+
}
|
|
577
|
+
return `${column} ${operator} ${valueStr}`.trim();
|
|
578
|
+
};
|
|
579
|
+
return wheres.map((cond, i) => conditionToSQL(cond, !i)).join(' ');
|
|
580
|
+
};
|
|
581
|
+
return `${this.$constants("WHERE")} ${serializeWhere(values)}`;
|
|
444
582
|
}
|
|
445
583
|
bindOrderBy(values) {
|
|
446
584
|
if (!Array.isArray(values) || !values.length)
|
|
@@ -501,12 +639,18 @@ class MysqlQueryBuilder extends __1.QueryBuilder {
|
|
|
501
639
|
return "";
|
|
502
640
|
return `${this.$constants("HAVING")} ${having}`;
|
|
503
641
|
}
|
|
504
|
-
bindRowLevelLock(
|
|
505
|
-
if (mode == null)
|
|
642
|
+
bindRowLevelLock(rowLevelLock) {
|
|
643
|
+
if (rowLevelLock.mode == null)
|
|
506
644
|
return '';
|
|
507
|
-
|
|
645
|
+
let modeLock = rowLevelLock.mode === "FOR_UPDATE"
|
|
508
646
|
? this.$constants("ROW_LEVEL_LOCK").update
|
|
509
647
|
: this.$constants("ROW_LEVEL_LOCK").share;
|
|
648
|
+
if (rowLevelLock.skipLocked) {
|
|
649
|
+
modeLock += ` ${this.$constants("ROW_LEVEL_LOCK").skipLocked}`;
|
|
650
|
+
}
|
|
651
|
+
if (rowLevelLock.nowait) {
|
|
652
|
+
modeLock += ` ${this.$constants("ROW_LEVEL_LOCK").nowait}`;
|
|
653
|
+
}
|
|
510
654
|
return modeLock;
|
|
511
655
|
}
|
|
512
656
|
}
|