@zhin.js/database 1.0.3 → 1.0.5
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/CHANGELOG.md +12 -0
- package/README.md +1360 -34
- package/lib/base/database.d.ts +71 -13
- package/lib/base/database.d.ts.map +1 -1
- package/lib/base/database.js +128 -4
- package/lib/base/database.js.map +1 -1
- package/lib/base/dialect.d.ts +27 -10
- package/lib/base/dialect.d.ts.map +1 -1
- package/lib/base/dialect.js +32 -0
- package/lib/base/dialect.js.map +1 -1
- package/lib/base/index.d.ts +1 -0
- package/lib/base/index.d.ts.map +1 -1
- package/lib/base/index.js +1 -0
- package/lib/base/index.js.map +1 -1
- package/lib/base/model.d.ts +105 -12
- package/lib/base/model.d.ts.map +1 -1
- package/lib/base/model.js +224 -3
- package/lib/base/model.js.map +1 -1
- package/lib/base/query-classes.d.ts +204 -33
- package/lib/base/query-classes.d.ts.map +1 -1
- package/lib/base/query-classes.js +276 -0
- package/lib/base/query-classes.js.map +1 -1
- package/lib/base/thenable.d.ts +7 -7
- package/lib/base/thenable.d.ts.map +1 -1
- package/lib/base/thenable.js +5 -4
- package/lib/base/thenable.js.map +1 -1
- package/lib/base/transaction.d.ts +46 -0
- package/lib/base/transaction.d.ts.map +1 -0
- package/lib/base/transaction.js +186 -0
- package/lib/base/transaction.js.map +1 -0
- package/lib/dialects/memory.d.ts +13 -8
- package/lib/dialects/memory.d.ts.map +1 -1
- package/lib/dialects/memory.js +10 -7
- package/lib/dialects/memory.js.map +1 -1
- package/lib/dialects/mongodb.d.ts +12 -8
- package/lib/dialects/mongodb.d.ts.map +1 -1
- package/lib/dialects/mongodb.js +21 -18
- package/lib/dialects/mongodb.js.map +1 -1
- package/lib/dialects/mysql.d.ts +36 -7
- package/lib/dialects/mysql.d.ts.map +1 -1
- package/lib/dialects/mysql.js +140 -21
- package/lib/dialects/mysql.js.map +1 -1
- package/lib/dialects/pg.d.ts +36 -7
- package/lib/dialects/pg.d.ts.map +1 -1
- package/lib/dialects/pg.js +140 -21
- package/lib/dialects/pg.js.map +1 -1
- package/lib/dialects/redis.d.ts +13 -8
- package/lib/dialects/redis.d.ts.map +1 -1
- package/lib/dialects/redis.js +14 -11
- package/lib/dialects/redis.js.map +1 -1
- package/lib/dialects/sqlite.d.ts +20 -7
- package/lib/dialects/sqlite.d.ts.map +1 -1
- package/lib/dialects/sqlite.js +66 -13
- package/lib/dialects/sqlite.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/migration.d.ts +132 -0
- package/lib/migration.d.ts.map +1 -0
- package/lib/migration.js +475 -0
- package/lib/migration.js.map +1 -0
- package/lib/registry.d.ts +26 -23
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +1 -5
- package/lib/registry.js.map +1 -1
- package/lib/type/document/database.d.ts +12 -12
- package/lib/type/document/database.d.ts.map +1 -1
- package/lib/type/document/database.js +1 -1
- package/lib/type/document/database.js.map +1 -1
- package/lib/type/document/model.d.ts +8 -8
- package/lib/type/document/model.d.ts.map +1 -1
- package/lib/type/document/model.js +1 -1
- package/lib/type/document/model.js.map +1 -1
- package/lib/type/keyvalue/database.d.ts +12 -12
- package/lib/type/keyvalue/database.d.ts.map +1 -1
- package/lib/type/keyvalue/database.js +1 -1
- package/lib/type/keyvalue/database.js.map +1 -1
- package/lib/type/keyvalue/model.d.ts +3 -3
- package/lib/type/keyvalue/model.d.ts.map +1 -1
- package/lib/type/keyvalue/model.js +1 -1
- package/lib/type/keyvalue/model.js.map +1 -1
- package/lib/type/related/database.d.ts +49 -14
- package/lib/type/related/database.d.ts.map +1 -1
- package/lib/type/related/database.js +259 -28
- package/lib/type/related/database.js.map +1 -1
- package/lib/type/related/model.d.ts +252 -16
- package/lib/type/related/model.d.ts.map +1 -1
- package/lib/type/related/model.js +648 -23
- package/lib/type/related/model.js.map +1 -1
- package/lib/types.d.ts +475 -37
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +6 -0
- package/lib/types.js.map +1 -1
- package/package.json +10 -5
- package/src/base/database.ts +168 -24
- package/src/base/dialect.ts +49 -10
- package/src/base/index.ts +2 -1
- package/src/base/model.ts +258 -18
- package/src/base/query-classes.ts +471 -63
- package/src/base/thenable.ts +12 -11
- package/src/base/transaction.ts +213 -0
- package/src/dialects/memory.ts +17 -16
- package/src/dialects/mongodb.ts +44 -42
- package/src/dialects/mysql.ts +155 -26
- package/src/dialects/pg.ts +152 -25
- package/src/dialects/redis.ts +45 -43
- package/src/dialects/sqlite.ts +77 -19
- package/src/index.ts +1 -2
- package/src/migration.ts +544 -0
- package/src/registry.ts +33 -33
- package/src/type/document/database.ts +33 -33
- package/src/type/document/model.ts +15 -15
- package/src/type/keyvalue/database.ts +33 -33
- package/src/type/keyvalue/model.ts +19 -19
- package/src/type/related/database.ts +309 -34
- package/src/type/related/model.ts +801 -34
- package/src/types.ts +559 -44
- package/tests/database.test.ts +1738 -0
package/lib/dialects/mysql.js
CHANGED
|
@@ -1,19 +1,36 @@
|
|
|
1
|
-
import { Dialect } from '../base';
|
|
2
|
-
import { RelatedDatabase } from "../type/related/database";
|
|
3
|
-
import { Registry } from "../registry";
|
|
1
|
+
import { Dialect } from '../base/index.js';
|
|
2
|
+
import { RelatedDatabase } from "../type/related/database.js";
|
|
3
|
+
import { Registry } from "../registry.js";
|
|
4
4
|
export class MySQLDialect extends Dialect {
|
|
5
5
|
connection = null;
|
|
6
|
+
pool = null;
|
|
7
|
+
usePool = false;
|
|
6
8
|
constructor(config) {
|
|
7
9
|
super('mysql', config);
|
|
10
|
+
this.usePool = !!config.pool;
|
|
8
11
|
}
|
|
9
12
|
// Connection management
|
|
10
13
|
isConnected() {
|
|
11
|
-
return this.connection !== null;
|
|
14
|
+
return this.usePool ? this.pool !== null : this.connection !== null;
|
|
12
15
|
}
|
|
13
16
|
async connect() {
|
|
14
17
|
try {
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
if (this.usePool) {
|
|
19
|
+
const { createPool } = await import('mysql2/promise');
|
|
20
|
+
const poolConfig = {
|
|
21
|
+
...this.config,
|
|
22
|
+
waitForConnections: true,
|
|
23
|
+
connectionLimit: this.config.pool?.max ?? 10,
|
|
24
|
+
queueLimit: 0,
|
|
25
|
+
idleTimeout: this.config.pool?.idleTimeoutMillis ?? 60000,
|
|
26
|
+
};
|
|
27
|
+
this.pool = createPool(poolConfig);
|
|
28
|
+
console.log(`MySQL 连接池已创建 (max: ${poolConfig.connectionLimit})`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const { createConnection } = await import('mysql2/promise');
|
|
32
|
+
this.connection = await createConnection(this.config);
|
|
33
|
+
}
|
|
17
34
|
}
|
|
18
35
|
catch (error) {
|
|
19
36
|
console.error('forgot install mysql2 ?');
|
|
@@ -21,20 +38,51 @@ export class MySQLDialect extends Dialect {
|
|
|
21
38
|
}
|
|
22
39
|
}
|
|
23
40
|
async disconnect() {
|
|
24
|
-
this.
|
|
41
|
+
if (this.usePool && this.pool) {
|
|
42
|
+
await this.pool.end();
|
|
43
|
+
this.pool = null;
|
|
44
|
+
console.log('MySQL 连接池已关闭');
|
|
45
|
+
}
|
|
46
|
+
else if (this.connection) {
|
|
47
|
+
await this.connection.end();
|
|
48
|
+
this.connection = null;
|
|
49
|
+
}
|
|
25
50
|
}
|
|
26
51
|
async healthCheck() {
|
|
27
|
-
|
|
52
|
+
if (!this.isConnected())
|
|
53
|
+
return false;
|
|
54
|
+
try {
|
|
55
|
+
await this.query('SELECT 1');
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
28
61
|
}
|
|
29
62
|
async query(sql, params) {
|
|
30
|
-
|
|
31
|
-
|
|
63
|
+
if (this.usePool) {
|
|
64
|
+
const [rows] = await this.pool.execute(sql, params);
|
|
65
|
+
return rows;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const [rows] = await this.connection.execute(sql, params);
|
|
69
|
+
return rows;
|
|
70
|
+
}
|
|
32
71
|
}
|
|
33
72
|
async dispose() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
73
|
+
await this.disconnect();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 获取连接池统计信息(仅在使用连接池时有效)
|
|
77
|
+
*/
|
|
78
|
+
getPoolStats() {
|
|
79
|
+
if (!this.usePool || !this.pool)
|
|
80
|
+
return null;
|
|
81
|
+
return {
|
|
82
|
+
total: this.pool.pool?._allConnections?.length ?? 0,
|
|
83
|
+
idle: this.pool.pool?._freeConnections?.length ?? 0,
|
|
84
|
+
waiting: this.pool.pool?._connectionQueue?.length ?? 0,
|
|
85
|
+
};
|
|
38
86
|
}
|
|
39
87
|
// SQL generation methods
|
|
40
88
|
mapColumnType(type) {
|
|
@@ -99,7 +147,7 @@ export class MySQLDialect extends Dialect {
|
|
|
99
147
|
return `LIMIT ${offset}, ${limit}`;
|
|
100
148
|
}
|
|
101
149
|
formatCreateTable(tableName, columns) {
|
|
102
|
-
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(tableName)} (${columns.join(', ')}) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`;
|
|
150
|
+
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(String(tableName))} (${columns.join(', ')}) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`;
|
|
103
151
|
}
|
|
104
152
|
formatColumnDefinition(field, column) {
|
|
105
153
|
const name = this.quoteIdentifier(String(field));
|
|
@@ -115,18 +163,89 @@ export class MySQLDialect extends Dialect {
|
|
|
115
163
|
return `${name} ${type}${length}${primary}${unique}${autoIncrement}${nullable}${defaultVal}`;
|
|
116
164
|
}
|
|
117
165
|
formatAlterTable(tableName, alterations) {
|
|
118
|
-
return `ALTER TABLE ${this.quoteIdentifier(tableName)} ${alterations.join(', ')}`;
|
|
166
|
+
return `ALTER TABLE ${this.quoteIdentifier(String(tableName))} ${alterations.join(', ')}`;
|
|
119
167
|
}
|
|
120
168
|
formatDropTable(tableName, ifExists) {
|
|
121
169
|
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
122
|
-
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(tableName)}`;
|
|
170
|
+
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(String(tableName))}`;
|
|
123
171
|
}
|
|
124
172
|
formatDropIndex(indexName, tableName, ifExists) {
|
|
125
173
|
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
126
|
-
return `DROP INDEX ${ifExistsClause}${this.quoteIdentifier(indexName)} ON ${this.quoteIdentifier(tableName)}`;
|
|
174
|
+
return `DROP INDEX ${ifExistsClause}${this.quoteIdentifier(indexName)} ON ${this.quoteIdentifier(String(tableName))}`;
|
|
175
|
+
}
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// Transaction Support
|
|
178
|
+
// ============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* MySQL 支持事务
|
|
181
|
+
*/
|
|
182
|
+
supportsTransactions() {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 开始事务
|
|
187
|
+
* 在连接池模式下,会获取一个专用连接用于事务
|
|
188
|
+
*/
|
|
189
|
+
async beginTransaction(options) {
|
|
190
|
+
if (this.usePool) {
|
|
191
|
+
// 从连接池获取一个连接用于事务
|
|
192
|
+
const connection = await this.pool.getConnection();
|
|
193
|
+
// 设置隔离级别
|
|
194
|
+
if (options?.isolationLevel) {
|
|
195
|
+
await connection.execute(`SET TRANSACTION ISOLATION LEVEL ${this.formatIsolationLevel(options.isolationLevel)}`);
|
|
196
|
+
}
|
|
197
|
+
// 开始事务
|
|
198
|
+
await connection.execute('START TRANSACTION');
|
|
199
|
+
return {
|
|
200
|
+
async commit() {
|
|
201
|
+
try {
|
|
202
|
+
await connection.execute('COMMIT');
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
connection.release(); // 归还连接到池
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
async rollback() {
|
|
209
|
+
try {
|
|
210
|
+
await connection.execute('ROLLBACK');
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
connection.release(); // 归还连接到池
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
async query(sql, params) {
|
|
217
|
+
const [rows] = await connection.execute(sql, params);
|
|
218
|
+
return rows;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// 单连接模式
|
|
224
|
+
const dialect = this;
|
|
225
|
+
// 设置隔离级别
|
|
226
|
+
if (options?.isolationLevel) {
|
|
227
|
+
await this.query(`SET TRANSACTION ISOLATION LEVEL ${this.formatIsolationLevel(options.isolationLevel)}`);
|
|
228
|
+
}
|
|
229
|
+
// 开始事务
|
|
230
|
+
await this.query('START TRANSACTION');
|
|
231
|
+
return {
|
|
232
|
+
async commit() {
|
|
233
|
+
await dialect.query('COMMIT');
|
|
234
|
+
},
|
|
235
|
+
async rollback() {
|
|
236
|
+
await dialect.query('ROLLBACK');
|
|
237
|
+
},
|
|
238
|
+
async query(sql, params) {
|
|
239
|
+
return dialect.query(sql, params);
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
export class MySQL extends RelatedDatabase {
|
|
246
|
+
constructor(config, definitions) {
|
|
247
|
+
super(new MySQLDialect(config), definitions);
|
|
127
248
|
}
|
|
128
249
|
}
|
|
129
|
-
Registry.register('mysql',
|
|
130
|
-
return new RelatedDatabase(new MySQLDialect(config), definitions);
|
|
131
|
-
});
|
|
250
|
+
Registry.register('mysql', MySQL);
|
|
132
251
|
//# sourceMappingURL=mysql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"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"}
|
package/lib/dialects/pg.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { Dialect } from '../base';
|
|
1
|
+
import { Dialect } from '../base/index.js';
|
|
2
|
+
import { RelatedDatabase } from "../type/related/database.js";
|
|
3
|
+
import { Database } from "../base/index.js";
|
|
2
4
|
import type { ClientConfig } from 'pg';
|
|
3
|
-
import { Column } from "../types";
|
|
5
|
+
import { Column, Transaction, TransactionOptions, PoolConfig } from "../types.js";
|
|
4
6
|
export interface PostgreSQLDialectConfig extends ClientConfig {
|
|
7
|
+
/**
|
|
8
|
+
* 连接池配置
|
|
9
|
+
* 如果提供此选项,将使用连接池而不是单连接
|
|
10
|
+
*/
|
|
11
|
+
pool?: PoolConfig;
|
|
5
12
|
}
|
|
6
|
-
export declare class PostgreSQLDialect extends Dialect<PostgreSQLDialectConfig, string> {
|
|
13
|
+
export declare class PostgreSQLDialect<S extends Record<string, object> = Record<string, object>> extends Dialect<PostgreSQLDialectConfig, S, string> {
|
|
7
14
|
private connection;
|
|
15
|
+
private pool;
|
|
16
|
+
private usePool;
|
|
8
17
|
constructor(config: PostgreSQLDialectConfig);
|
|
9
18
|
isConnected(): boolean;
|
|
10
19
|
connect(): Promise<void>;
|
|
@@ -12,6 +21,14 @@ export declare class PostgreSQLDialect extends Dialect<PostgreSQLDialectConfig,
|
|
|
12
21
|
healthCheck(): Promise<boolean>;
|
|
13
22
|
query<U = any>(sql: string, params?: any[]): Promise<U>;
|
|
14
23
|
dispose(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* 获取连接池统计信息(仅在使用连接池时有效)
|
|
26
|
+
*/
|
|
27
|
+
getPoolStats(): {
|
|
28
|
+
total: number;
|
|
29
|
+
idle: number;
|
|
30
|
+
waiting: number;
|
|
31
|
+
} | null;
|
|
15
32
|
mapColumnType(type: string): string;
|
|
16
33
|
quoteIdentifier(identifier: string): string;
|
|
17
34
|
getParameterPlaceholder(index: number): string;
|
|
@@ -24,10 +41,22 @@ export declare class PostgreSQLDialect extends Dialect<PostgreSQLDialectConfig,
|
|
|
24
41
|
formatLimit(limit: number): string;
|
|
25
42
|
formatOffset(offset: number): string;
|
|
26
43
|
formatLimitOffset(limit: number, offset: number): string;
|
|
27
|
-
formatCreateTable(tableName:
|
|
44
|
+
formatCreateTable<T extends keyof S>(tableName: T, columns: string[]): string;
|
|
28
45
|
formatColumnDefinition(field: string, column: Column<any>): string;
|
|
29
|
-
formatAlterTable(tableName:
|
|
30
|
-
formatDropTable(tableName:
|
|
31
|
-
formatDropIndex(indexName: string, tableName:
|
|
46
|
+
formatAlterTable<T extends keyof S>(tableName: T, alterations: string[]): string;
|
|
47
|
+
formatDropTable<T extends keyof S>(tableName: T, ifExists?: boolean): string;
|
|
48
|
+
formatDropIndex<T extends keyof S>(indexName: string, tableName: T, ifExists?: boolean): string;
|
|
49
|
+
/**
|
|
50
|
+
* PostgreSQL 支持事务
|
|
51
|
+
*/
|
|
52
|
+
supportsTransactions(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* 开始事务
|
|
55
|
+
* 在连接池模式下,会获取一个专用连接用于事务
|
|
56
|
+
*/
|
|
57
|
+
beginTransaction(options?: TransactionOptions): Promise<Transaction>;
|
|
58
|
+
}
|
|
59
|
+
export declare class PG<S extends Record<string, object> = Record<string, object>> extends RelatedDatabase<PostgreSQLDialectConfig, S> {
|
|
60
|
+
constructor(config: PostgreSQLDialectConfig, definitions?: Database.DefinitionObj<S>);
|
|
32
61
|
}
|
|
33
62
|
//# sourceMappingURL=pg.d.ts.map
|
package/lib/dialects/pg.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"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"}
|
package/lib/dialects/pg.js
CHANGED
|
@@ -1,20 +1,37 @@
|
|
|
1
|
-
import { Dialect } from '../base';
|
|
2
|
-
import { RelatedDatabase } from "../type/related/database";
|
|
3
|
-
import { Registry } from "../registry";
|
|
1
|
+
import { Dialect } from '../base/index.js';
|
|
2
|
+
import { RelatedDatabase } from "../type/related/database.js";
|
|
3
|
+
import { Registry } from "../registry.js";
|
|
4
4
|
export class PostgreSQLDialect extends Dialect {
|
|
5
5
|
connection = null;
|
|
6
|
+
pool = null;
|
|
7
|
+
usePool = false;
|
|
6
8
|
constructor(config) {
|
|
7
9
|
super('pg', config);
|
|
10
|
+
this.usePool = !!config.pool;
|
|
8
11
|
}
|
|
9
12
|
// Connection management
|
|
10
13
|
isConnected() {
|
|
11
|
-
return this.connection !== null;
|
|
14
|
+
return this.usePool ? this.pool !== null : this.connection !== null;
|
|
12
15
|
}
|
|
13
16
|
async connect() {
|
|
14
17
|
try {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
if (this.usePool) {
|
|
19
|
+
const { Pool } = await import('pg');
|
|
20
|
+
const poolConfig = {
|
|
21
|
+
...this.config,
|
|
22
|
+
max: this.config.pool?.max ?? 10,
|
|
23
|
+
min: this.config.pool?.min ?? 2,
|
|
24
|
+
idleTimeoutMillis: this.config.pool?.idleTimeoutMillis ?? 30000,
|
|
25
|
+
connectionTimeoutMillis: this.config.pool?.acquireTimeoutMillis ?? 10000,
|
|
26
|
+
};
|
|
27
|
+
this.pool = new Pool(poolConfig);
|
|
28
|
+
console.log(`PostgreSQL 连接池已创建 (max: ${poolConfig.max})`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const { Client } = await import('pg');
|
|
32
|
+
this.connection = new Client(this.config);
|
|
33
|
+
await this.connection.connect();
|
|
34
|
+
}
|
|
18
35
|
}
|
|
19
36
|
catch (error) {
|
|
20
37
|
console.error('forgot install pg ?');
|
|
@@ -22,20 +39,51 @@ export class PostgreSQLDialect extends Dialect {
|
|
|
22
39
|
}
|
|
23
40
|
}
|
|
24
41
|
async disconnect() {
|
|
25
|
-
this.
|
|
42
|
+
if (this.usePool && this.pool) {
|
|
43
|
+
await this.pool.end();
|
|
44
|
+
this.pool = null;
|
|
45
|
+
console.log('PostgreSQL 连接池已关闭');
|
|
46
|
+
}
|
|
47
|
+
else if (this.connection) {
|
|
48
|
+
await this.connection.end();
|
|
49
|
+
this.connection = null;
|
|
50
|
+
}
|
|
26
51
|
}
|
|
27
52
|
async healthCheck() {
|
|
28
|
-
|
|
53
|
+
if (!this.isConnected())
|
|
54
|
+
return false;
|
|
55
|
+
try {
|
|
56
|
+
await this.query('SELECT 1');
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
29
62
|
}
|
|
30
63
|
async query(sql, params) {
|
|
31
|
-
|
|
32
|
-
|
|
64
|
+
if (this.usePool) {
|
|
65
|
+
const result = await this.pool.query(sql, params);
|
|
66
|
+
return result.rows;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const result = await this.connection.query(sql, params);
|
|
70
|
+
return result.rows;
|
|
71
|
+
}
|
|
33
72
|
}
|
|
34
73
|
async dispose() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
74
|
+
await this.disconnect();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 获取连接池统计信息(仅在使用连接池时有效)
|
|
78
|
+
*/
|
|
79
|
+
getPoolStats() {
|
|
80
|
+
if (!this.usePool || !this.pool)
|
|
81
|
+
return null;
|
|
82
|
+
return {
|
|
83
|
+
total: this.pool.totalCount ?? 0,
|
|
84
|
+
idle: this.pool.idleCount ?? 0,
|
|
85
|
+
waiting: this.pool.waitingCount ?? 0,
|
|
86
|
+
};
|
|
39
87
|
}
|
|
40
88
|
// SQL generation methods
|
|
41
89
|
mapColumnType(type) {
|
|
@@ -100,7 +148,7 @@ export class PostgreSQLDialect extends Dialect {
|
|
|
100
148
|
return `LIMIT ${limit} OFFSET ${offset}`;
|
|
101
149
|
}
|
|
102
150
|
formatCreateTable(tableName, columns) {
|
|
103
|
-
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(tableName)} (${columns.join(', ')})`;
|
|
151
|
+
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(String(tableName))} (${columns.join(', ')})`;
|
|
104
152
|
}
|
|
105
153
|
formatColumnDefinition(field, column) {
|
|
106
154
|
const name = this.quoteIdentifier(String(field));
|
|
@@ -115,18 +163,89 @@ export class PostgreSQLDialect extends Dialect {
|
|
|
115
163
|
return `${name} ${type}${length}${primary}${unique}${nullable}${defaultVal}`;
|
|
116
164
|
}
|
|
117
165
|
formatAlterTable(tableName, alterations) {
|
|
118
|
-
return `ALTER TABLE ${this.quoteIdentifier(tableName)} ${alterations.join(', ')}`;
|
|
166
|
+
return `ALTER TABLE ${this.quoteIdentifier(String(tableName))} ${alterations.join(', ')}`;
|
|
119
167
|
}
|
|
120
168
|
formatDropTable(tableName, ifExists) {
|
|
121
169
|
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
122
|
-
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(tableName)}`;
|
|
170
|
+
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(String(tableName))}`;
|
|
123
171
|
}
|
|
124
172
|
formatDropIndex(indexName, tableName, ifExists) {
|
|
125
173
|
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
126
174
|
return `DROP INDEX ${ifExistsClause}${this.quoteIdentifier(indexName)}`;
|
|
127
175
|
}
|
|
176
|
+
// ============================================================================
|
|
177
|
+
// Transaction Support
|
|
178
|
+
// ============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* PostgreSQL 支持事务
|
|
181
|
+
*/
|
|
182
|
+
supportsTransactions() {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 开始事务
|
|
187
|
+
* 在连接池模式下,会获取一个专用连接用于事务
|
|
188
|
+
*/
|
|
189
|
+
async beginTransaction(options) {
|
|
190
|
+
if (this.usePool) {
|
|
191
|
+
// 从连接池获取一个连接用于事务
|
|
192
|
+
const client = await this.pool.connect();
|
|
193
|
+
// 开始事务(可以带隔离级别)
|
|
194
|
+
let beginSql = 'BEGIN';
|
|
195
|
+
if (options?.isolationLevel) {
|
|
196
|
+
beginSql = `BEGIN ISOLATION LEVEL ${this.formatIsolationLevel(options.isolationLevel)}`;
|
|
197
|
+
}
|
|
198
|
+
await client.query(beginSql);
|
|
199
|
+
return {
|
|
200
|
+
async commit() {
|
|
201
|
+
try {
|
|
202
|
+
await client.query('COMMIT');
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
client.release(); // 归还连接到池
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
async rollback() {
|
|
209
|
+
try {
|
|
210
|
+
await client.query('ROLLBACK');
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
client.release(); // 归还连接到池
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
async query(sql, params) {
|
|
217
|
+
const result = await client.query(sql, params);
|
|
218
|
+
return result.rows;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// 单连接模式
|
|
224
|
+
const dialect = this;
|
|
225
|
+
// 开始事务(可以带隔离级别)
|
|
226
|
+
let beginSql = 'BEGIN';
|
|
227
|
+
if (options?.isolationLevel) {
|
|
228
|
+
beginSql = `BEGIN ISOLATION LEVEL ${this.formatIsolationLevel(options.isolationLevel)}`;
|
|
229
|
+
}
|
|
230
|
+
await this.query(beginSql);
|
|
231
|
+
return {
|
|
232
|
+
async commit() {
|
|
233
|
+
await dialect.query('COMMIT');
|
|
234
|
+
},
|
|
235
|
+
async rollback() {
|
|
236
|
+
await dialect.query('ROLLBACK');
|
|
237
|
+
},
|
|
238
|
+
async query(sql, params) {
|
|
239
|
+
return dialect.query(sql, params);
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
export class PG extends RelatedDatabase {
|
|
246
|
+
constructor(config, definitions) {
|
|
247
|
+
super(new PostgreSQLDialect(config), definitions);
|
|
248
|
+
}
|
|
128
249
|
}
|
|
129
|
-
Registry.register('pg',
|
|
130
|
-
return new RelatedDatabase(new PostgreSQLDialect(config), definitions);
|
|
131
|
-
});
|
|
250
|
+
Registry.register('pg', PG);
|
|
132
251
|
//# sourceMappingURL=pg.js.map
|
package/lib/dialects/pg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"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"}
|
package/lib/dialects/redis.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Dialect } from "../base";
|
|
1
|
+
import { Dialect } from "../base/index.js";
|
|
2
|
+
import { KeyValueDatabase } from "../type/keyvalue/database.js";
|
|
3
|
+
import { Database } from "../base/index.js";
|
|
2
4
|
import type { RedisClientOptions } from 'redis';
|
|
3
|
-
import { BuildQueryResult, KeyValueQueryResult, DatabaseDialect, QueryParams } from "../types";
|
|
5
|
+
import { BuildQueryResult, KeyValueQueryResult, DatabaseDialect, QueryParams } from "../types.js";
|
|
4
6
|
export interface RedisDialectConfig extends RedisClientOptions {
|
|
5
7
|
}
|
|
6
|
-
export declare class RedisDialect extends Dialect<RedisDialectConfig, KeyValueQueryResult> {
|
|
8
|
+
export declare class RedisDialect<S extends Record<string, object> = Record<string, object>> extends Dialect<RedisDialectConfig, S, KeyValueQueryResult> {
|
|
7
9
|
private client;
|
|
8
10
|
constructor(config: RedisDialectConfig);
|
|
9
11
|
/**
|
|
@@ -41,7 +43,7 @@ export declare class RedisDialect extends Dialect<RedisDialectConfig, KeyValueQu
|
|
|
41
43
|
/**
|
|
42
44
|
* 构建查询
|
|
43
45
|
*/
|
|
44
|
-
buildQuery<
|
|
46
|
+
buildQuery<T extends keyof S>(params: QueryParams<S, T>): BuildQueryResult<KeyValueQueryResult>;
|
|
45
47
|
mapColumnType(type: string): string;
|
|
46
48
|
quoteIdentifier(identifier: string): string;
|
|
47
49
|
getParameterPlaceholder(index: number): string;
|
|
@@ -54,10 +56,10 @@ export declare class RedisDialect extends Dialect<RedisDialectConfig, KeyValueQu
|
|
|
54
56
|
formatLimit(limit: number): string;
|
|
55
57
|
formatOffset(offset: number): string;
|
|
56
58
|
formatLimitOffset(limit: number, offset: number): string;
|
|
57
|
-
formatCreateTable(tableName:
|
|
58
|
-
formatAlterTable(tableName:
|
|
59
|
-
formatDropTable(tableName:
|
|
60
|
-
formatDropIndex(indexName: string, tableName:
|
|
59
|
+
formatCreateTable(tableName: keyof S, columns: string[]): string;
|
|
60
|
+
formatAlterTable(tableName: keyof S, alterations: string[]): string;
|
|
61
|
+
formatDropTable(tableName: keyof S, ifExists?: boolean): string;
|
|
62
|
+
formatDropIndex(indexName: string, tableName: keyof S, ifExists?: boolean): string;
|
|
61
63
|
private buildCreateQuery;
|
|
62
64
|
private buildSelectQuery;
|
|
63
65
|
private buildInsertQuery;
|
|
@@ -84,4 +86,7 @@ export declare class RedisDialect extends Dialect<RedisDialectConfig, KeyValueQu
|
|
|
84
86
|
private executeKeysByPattern;
|
|
85
87
|
get dialectInfo(): DatabaseDialect;
|
|
86
88
|
}
|
|
89
|
+
export declare class Redis<S extends Record<string, object> = Record<string, object>> extends KeyValueDatabase<RedisDialectConfig, S> {
|
|
90
|
+
constructor(config: RedisDialectConfig, definitions?: Database.DefinitionObj<S>);
|
|
91
|
+
}
|
|
87
92
|
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/dialects/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/dialects/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,WAAW,EASZ,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;CAAG;AACjE,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,mBAAmB,CAAC;IAC9I,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAYrC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IA6ChF;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;IAwB/F,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAInC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAI3C,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9C,sBAAsB,IAAI,MAAM;IAIhC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIrC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAI/B,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAItC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAIxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAIhE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAInE,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAI/D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAKlF,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,kBAAkB;YAmBZ,UAAU;YAmBV,UAAU;YAkBV,aAAa;YAUb,UAAU;YAUV,WAAW;YAMX,aAAa;YAkBb,cAAc;YAoBd,YAAY;YAYZ,WAAW;YAMX,aAAa;YAWb,UAAU;YAUV,cAAc;YAUd,cAAc;YAKd,oBAAoB;IAOlC,IAAI,WAAW,IAAI,eAAe,CA4BjC;CACF;AACD,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAE,SAAQ,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC/G,MAAM,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;CAGhF"}
|