@zhin.js/database 1.0.0
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/LICENSE +21 -0
- package/README.md +93 -0
- package/lib/base/database.d.ts +71 -0
- package/lib/base/database.d.ts.map +1 -0
- package/lib/base/database.js +101 -0
- package/lib/base/database.js.map +1 -0
- package/lib/base/dialect.d.ts +34 -0
- package/lib/base/dialect.d.ts.map +1 -0
- package/lib/base/dialect.js +21 -0
- package/lib/base/dialect.js.map +1 -0
- package/lib/base/index.d.ts +6 -0
- package/lib/base/index.d.ts.map +1 -0
- package/lib/base/index.js +6 -0
- package/lib/base/index.js.map +1 -0
- package/lib/base/model.d.ts +53 -0
- package/lib/base/model.d.ts.map +1 -0
- package/lib/base/model.js +65 -0
- package/lib/base/model.js.map +1 -0
- package/lib/base/query-classes.d.ts +68 -0
- package/lib/base/query-classes.d.ts.map +1 -0
- package/lib/base/query-classes.js +178 -0
- package/lib/base/query-classes.js.map +1 -0
- package/lib/base/thenable.d.ts +15 -0
- package/lib/base/thenable.d.ts.map +1 -0
- package/lib/base/thenable.js +33 -0
- package/lib/base/thenable.js.map +1 -0
- package/lib/dialects/memory.d.ts +52 -0
- package/lib/dialects/memory.d.ts.map +1 -0
- package/lib/dialects/memory.js +772 -0
- package/lib/dialects/memory.js.map +1 -0
- package/lib/dialects/mongodb.d.ts +85 -0
- package/lib/dialects/mongodb.d.ts.map +1 -0
- package/lib/dialects/mongodb.js +461 -0
- package/lib/dialects/mongodb.js.map +1 -0
- package/lib/dialects/mysql.d.ts +33 -0
- package/lib/dialects/mysql.d.ts.map +1 -0
- package/lib/dialects/mysql.js +132 -0
- package/lib/dialects/mysql.js.map +1 -0
- package/lib/dialects/pg.d.ts +33 -0
- package/lib/dialects/pg.d.ts.map +1 -0
- package/lib/dialects/pg.js +132 -0
- package/lib/dialects/pg.js.map +1 -0
- package/lib/dialects/redis.d.ts +87 -0
- package/lib/dialects/redis.d.ts.map +1 -0
- package/lib/dialects/redis.js +500 -0
- package/lib/dialects/redis.js.map +1 -0
- package/lib/dialects/sqlite.d.ts +46 -0
- package/lib/dialects/sqlite.d.ts.map +1 -0
- package/lib/dialects/sqlite.js +201 -0
- package/lib/dialects/sqlite.js.map +1 -0
- package/lib/index.d.ts +18 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -0
- package/lib/registry.d.ts +37 -0
- package/lib/registry.d.ts.map +1 -0
- package/lib/registry.js +21 -0
- package/lib/registry.js.map +1 -0
- package/lib/type/document/database.d.ts +60 -0
- package/lib/type/document/database.d.ts.map +1 -0
- package/lib/type/document/database.js +242 -0
- package/lib/type/document/database.js.map +1 -0
- package/lib/type/document/model.d.ts +42 -0
- package/lib/type/document/model.d.ts.map +1 -0
- package/lib/type/document/model.js +65 -0
- package/lib/type/document/model.js.map +1 -0
- package/lib/type/keyvalue/database.d.ts +64 -0
- package/lib/type/keyvalue/database.d.ts.map +1 -0
- package/lib/type/keyvalue/database.js +214 -0
- package/lib/type/keyvalue/database.js.map +1 -0
- package/lib/type/keyvalue/model.d.ts +107 -0
- package/lib/type/keyvalue/model.d.ts.map +1 -0
- package/lib/type/keyvalue/model.js +261 -0
- package/lib/type/keyvalue/model.js.map +1 -0
- package/lib/type/related/database.d.ts +32 -0
- package/lib/type/related/database.d.ts.map +1 -0
- package/lib/type/related/database.js +334 -0
- package/lib/type/related/database.js.map +1 -0
- package/lib/type/related/model.d.ts +43 -0
- package/lib/type/related/model.d.ts.map +1 -0
- package/lib/type/related/model.js +108 -0
- package/lib/type/related/model.js.map +1 -0
- package/lib/types.d.ts +251 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +28 -0
- package/lib/types.js.map +1 -0
- package/package.json +54 -0
- package/src/base/database.ts +128 -0
- package/src/base/dialect.ts +76 -0
- package/src/base/index.ts +5 -0
- package/src/base/model.ts +89 -0
- package/src/base/query-classes.ts +217 -0
- package/src/base/thenable.ts +54 -0
- package/src/dialects/memory.ts +880 -0
- package/src/dialects/mongodb.ts +533 -0
- package/src/dialects/mysql.ts +157 -0
- package/src/dialects/pg.ts +157 -0
- package/src/dialects/redis.ts +598 -0
- package/src/dialects/sqlite.ts +233 -0
- package/src/index.ts +20 -0
- package/src/registry.ts +59 -0
- package/src/type/document/database.ts +283 -0
- package/src/type/document/model.ts +86 -0
- package/src/type/keyvalue/database.ts +261 -0
- package/src/type/keyvalue/model.ts +339 -0
- package/src/type/related/database.ts +392 -0
- package/src/type/related/model.ts +117 -0
- package/src/types.ts +403 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAGhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;CAAG;AAEhE,qBAAa,YAAa,SAAQ,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACnE,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,kBAAkB;IAKtC,WAAW,IAAI,OAAO;IAIhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAKvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAYnC,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;IAgBtC,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,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAI/D,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;IAelE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAIlE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAK9D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;CAIlF"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Dialect } from '../base';
|
|
2
|
+
import { RelatedDatabase } from "../type/related/database";
|
|
3
|
+
import { Registry } from "../registry";
|
|
4
|
+
export class MySQLDialect extends Dialect {
|
|
5
|
+
connection = null;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
super('mysql', config);
|
|
8
|
+
}
|
|
9
|
+
// Connection management
|
|
10
|
+
isConnected() {
|
|
11
|
+
return this.connection !== null;
|
|
12
|
+
}
|
|
13
|
+
async connect() {
|
|
14
|
+
try {
|
|
15
|
+
const { createConnection } = await import('mysql2/promise');
|
|
16
|
+
this.connection = await createConnection(this.config);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error('forgot install mysql2 ?');
|
|
20
|
+
throw new Error(`MySQL 连接失败: ${error}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async disconnect() {
|
|
24
|
+
this.connection = null;
|
|
25
|
+
}
|
|
26
|
+
async healthCheck() {
|
|
27
|
+
return this.isConnected();
|
|
28
|
+
}
|
|
29
|
+
async query(sql, params) {
|
|
30
|
+
const [rows] = await this.connection.execute(sql, params);
|
|
31
|
+
return rows;
|
|
32
|
+
}
|
|
33
|
+
async dispose() {
|
|
34
|
+
if (this.connection) {
|
|
35
|
+
await this.connection.end();
|
|
36
|
+
this.connection = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// SQL generation methods
|
|
40
|
+
mapColumnType(type) {
|
|
41
|
+
const typeMap = {
|
|
42
|
+
'text': 'TEXT',
|
|
43
|
+
'integer': 'INT',
|
|
44
|
+
'float': 'FLOAT',
|
|
45
|
+
'boolean': 'BOOLEAN',
|
|
46
|
+
'date': 'DATETIME',
|
|
47
|
+
'json': 'JSON'
|
|
48
|
+
};
|
|
49
|
+
return typeMap[type.toLowerCase()] || 'TEXT';
|
|
50
|
+
}
|
|
51
|
+
quoteIdentifier(identifier) {
|
|
52
|
+
return `\`${identifier}\``;
|
|
53
|
+
}
|
|
54
|
+
getParameterPlaceholder(index) {
|
|
55
|
+
return '?';
|
|
56
|
+
}
|
|
57
|
+
getStatementTerminator() {
|
|
58
|
+
return ';';
|
|
59
|
+
}
|
|
60
|
+
formatBoolean(value) {
|
|
61
|
+
return value ? 'TRUE' : 'FALSE';
|
|
62
|
+
}
|
|
63
|
+
formatDate(value) {
|
|
64
|
+
return `'${value.toISOString().slice(0, 19).replace('T', ' ')}'`;
|
|
65
|
+
}
|
|
66
|
+
formatJson(value) {
|
|
67
|
+
return `'${JSON.stringify(value).replace(/'/g, "''")}'`;
|
|
68
|
+
}
|
|
69
|
+
escapeString(value) {
|
|
70
|
+
return value.replace(/'/g, "''");
|
|
71
|
+
}
|
|
72
|
+
formatDefaultValue(value) {
|
|
73
|
+
if (typeof value === 'string') {
|
|
74
|
+
return `'${this.escapeString(value)}'`;
|
|
75
|
+
}
|
|
76
|
+
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
77
|
+
return value.toString();
|
|
78
|
+
}
|
|
79
|
+
else if (value instanceof Date) {
|
|
80
|
+
return this.formatDate(value);
|
|
81
|
+
}
|
|
82
|
+
else if (value === null) {
|
|
83
|
+
return 'NULL';
|
|
84
|
+
}
|
|
85
|
+
else if (typeof value === 'object') {
|
|
86
|
+
return this.formatJson(value);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new Error(`Unsupported default value type: ${typeof value}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
formatLimit(limit) {
|
|
93
|
+
return `LIMIT ${limit}`;
|
|
94
|
+
}
|
|
95
|
+
formatOffset(offset) {
|
|
96
|
+
return `OFFSET ${offset}`;
|
|
97
|
+
}
|
|
98
|
+
formatLimitOffset(limit, offset) {
|
|
99
|
+
return `LIMIT ${offset}, ${limit}`;
|
|
100
|
+
}
|
|
101
|
+
formatCreateTable(tableName, columns) {
|
|
102
|
+
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(tableName)} (${columns.join(', ')}) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`;
|
|
103
|
+
}
|
|
104
|
+
formatColumnDefinition(field, column) {
|
|
105
|
+
const name = this.quoteIdentifier(String(field));
|
|
106
|
+
const type = this.mapColumnType(column.type);
|
|
107
|
+
const length = column.length ? `(${column.length})` : '';
|
|
108
|
+
const nullable = column.nullable === false ? ' NOT NULL' : '';
|
|
109
|
+
const primary = column.primary ? ' PRIMARY KEY' : '';
|
|
110
|
+
const unique = column.unique ? ' UNIQUE' : '';
|
|
111
|
+
const autoIncrement = column.autoIncrement ? ' AUTO_INCREMENT' : '';
|
|
112
|
+
const defaultVal = column.default !== undefined
|
|
113
|
+
? ` DEFAULT ${this.formatDefaultValue(column.default)}`
|
|
114
|
+
: '';
|
|
115
|
+
return `${name} ${type}${length}${primary}${unique}${autoIncrement}${nullable}${defaultVal}`;
|
|
116
|
+
}
|
|
117
|
+
formatAlterTable(tableName, alterations) {
|
|
118
|
+
return `ALTER TABLE ${this.quoteIdentifier(tableName)} ${alterations.join(', ')}`;
|
|
119
|
+
}
|
|
120
|
+
formatDropTable(tableName, ifExists) {
|
|
121
|
+
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
122
|
+
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(tableName)}`;
|
|
123
|
+
}
|
|
124
|
+
formatDropIndex(indexName, tableName, ifExists) {
|
|
125
|
+
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
126
|
+
return `DROP INDEX ${ifExistsClause}${this.quoteIdentifier(indexName)} ON ${this.quoteIdentifier(tableName)}`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
Registry.register('mysql', (config, schemas) => {
|
|
130
|
+
return new RelatedDatabase(new MySQLDialect(config), schemas);
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=mysql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/dialects/mysql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Dialect } from '../base';
|
|
2
|
+
import type { ClientConfig } from 'pg';
|
|
3
|
+
import { Column } from "../types";
|
|
4
|
+
export interface PostgreSQLDialectConfig extends ClientConfig {
|
|
5
|
+
}
|
|
6
|
+
export declare class PostgreSQLDialect extends Dialect<PostgreSQLDialectConfig, string> {
|
|
7
|
+
private connection;
|
|
8
|
+
constructor(config: PostgreSQLDialectConfig);
|
|
9
|
+
isConnected(): boolean;
|
|
10
|
+
connect(): Promise<void>;
|
|
11
|
+
disconnect(): Promise<void>;
|
|
12
|
+
healthCheck(): Promise<boolean>;
|
|
13
|
+
query<U = any>(sql: string, params?: any[]): Promise<U>;
|
|
14
|
+
dispose(): Promise<void>;
|
|
15
|
+
mapColumnType(type: string): string;
|
|
16
|
+
quoteIdentifier(identifier: string): string;
|
|
17
|
+
getParameterPlaceholder(index: number): string;
|
|
18
|
+
getStatementTerminator(): string;
|
|
19
|
+
formatBoolean(value: boolean): string;
|
|
20
|
+
formatDate(value: Date): string;
|
|
21
|
+
formatJson(value: any): string;
|
|
22
|
+
escapeString(value: string): string;
|
|
23
|
+
formatDefaultValue(value: any): string;
|
|
24
|
+
formatLimit(limit: number): string;
|
|
25
|
+
formatOffset(offset: number): string;
|
|
26
|
+
formatLimitOffset(limit: number, offset: number): string;
|
|
27
|
+
formatCreateTable(tableName: string, columns: string[]): string;
|
|
28
|
+
formatColumnDefinition(field: string, column: Column<any>): string;
|
|
29
|
+
formatAlterTable(tableName: string, alterations: string[]): string;
|
|
30
|
+
formatDropTable(tableName: string, ifExists?: boolean): string;
|
|
31
|
+
formatDropIndex(indexName: string, tableName: string, ifExists?: boolean): string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=pg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAIhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,uBAAwB,SAAQ,YAAY;CAAG;AAEhE,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAC7E,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,uBAAuB;IAK3C,WAAW,IAAI,OAAO;IAIhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAKvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAYnC,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;IAgBtC,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,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAI/D,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;IAclE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAIlE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAK9D,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;CAIlF"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Dialect } from '../base';
|
|
2
|
+
import { RelatedDatabase } from "../type/related/database";
|
|
3
|
+
import { Registry } from "../registry";
|
|
4
|
+
export class PostgreSQLDialect extends Dialect {
|
|
5
|
+
connection = null;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
super('pg', config);
|
|
8
|
+
}
|
|
9
|
+
// Connection management
|
|
10
|
+
isConnected() {
|
|
11
|
+
return this.connection !== null;
|
|
12
|
+
}
|
|
13
|
+
async connect() {
|
|
14
|
+
try {
|
|
15
|
+
const { Client } = await import('pg');
|
|
16
|
+
this.connection = new Client(this.config);
|
|
17
|
+
await this.connection.connect();
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error('forgot install pg ?');
|
|
21
|
+
throw new Error(`PostgreSQL 连接失败: ${error}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async disconnect() {
|
|
25
|
+
this.connection = null;
|
|
26
|
+
}
|
|
27
|
+
async healthCheck() {
|
|
28
|
+
return this.isConnected();
|
|
29
|
+
}
|
|
30
|
+
async query(sql, params) {
|
|
31
|
+
const result = await this.connection.query(sql, params);
|
|
32
|
+
return result.rows;
|
|
33
|
+
}
|
|
34
|
+
async dispose() {
|
|
35
|
+
if (this.connection) {
|
|
36
|
+
await this.connection.end();
|
|
37
|
+
this.connection = null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// SQL generation methods
|
|
41
|
+
mapColumnType(type) {
|
|
42
|
+
const typeMap = {
|
|
43
|
+
'text': 'TEXT',
|
|
44
|
+
'integer': 'INTEGER',
|
|
45
|
+
'float': 'REAL',
|
|
46
|
+
'boolean': 'BOOLEAN',
|
|
47
|
+
'date': 'TIMESTAMP',
|
|
48
|
+
'json': 'JSONB'
|
|
49
|
+
};
|
|
50
|
+
return typeMap[type.toLowerCase()] || 'TEXT';
|
|
51
|
+
}
|
|
52
|
+
quoteIdentifier(identifier) {
|
|
53
|
+
return `"${identifier}"`;
|
|
54
|
+
}
|
|
55
|
+
getParameterPlaceholder(index) {
|
|
56
|
+
return `$${index + 1}`;
|
|
57
|
+
}
|
|
58
|
+
getStatementTerminator() {
|
|
59
|
+
return ';';
|
|
60
|
+
}
|
|
61
|
+
formatBoolean(value) {
|
|
62
|
+
return value ? 'TRUE' : 'FALSE';
|
|
63
|
+
}
|
|
64
|
+
formatDate(value) {
|
|
65
|
+
return `'${value.toISOString()}'::TIMESTAMP`;
|
|
66
|
+
}
|
|
67
|
+
formatJson(value) {
|
|
68
|
+
return `'${JSON.stringify(value).replace(/'/g, "''")}'::JSONB`;
|
|
69
|
+
}
|
|
70
|
+
escapeString(value) {
|
|
71
|
+
return value.replace(/'/g, "''");
|
|
72
|
+
}
|
|
73
|
+
formatDefaultValue(value) {
|
|
74
|
+
if (typeof value === 'string') {
|
|
75
|
+
return `'${this.escapeString(value)}'`;
|
|
76
|
+
}
|
|
77
|
+
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
78
|
+
return value.toString();
|
|
79
|
+
}
|
|
80
|
+
else if (value instanceof Date) {
|
|
81
|
+
return this.formatDate(value);
|
|
82
|
+
}
|
|
83
|
+
else if (value === null) {
|
|
84
|
+
return 'NULL';
|
|
85
|
+
}
|
|
86
|
+
else if (typeof value === 'object') {
|
|
87
|
+
return this.formatJson(value);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
throw new Error(`Unsupported default value type: ${typeof value}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
formatLimit(limit) {
|
|
94
|
+
return `LIMIT ${limit}`;
|
|
95
|
+
}
|
|
96
|
+
formatOffset(offset) {
|
|
97
|
+
return `OFFSET ${offset}`;
|
|
98
|
+
}
|
|
99
|
+
formatLimitOffset(limit, offset) {
|
|
100
|
+
return `LIMIT ${limit} OFFSET ${offset}`;
|
|
101
|
+
}
|
|
102
|
+
formatCreateTable(tableName, columns) {
|
|
103
|
+
return `CREATE TABLE IF NOT EXISTS ${this.quoteIdentifier(tableName)} (${columns.join(', ')})`;
|
|
104
|
+
}
|
|
105
|
+
formatColumnDefinition(field, column) {
|
|
106
|
+
const name = this.quoteIdentifier(String(field));
|
|
107
|
+
const type = this.mapColumnType(column.type);
|
|
108
|
+
const length = column.length ? `(${column.length})` : '';
|
|
109
|
+
const nullable = column.nullable === false ? ' NOT NULL' : '';
|
|
110
|
+
const primary = column.primary ? ' PRIMARY KEY' : '';
|
|
111
|
+
const unique = column.unique ? ' UNIQUE' : '';
|
|
112
|
+
const defaultVal = column.default !== undefined
|
|
113
|
+
? ` DEFAULT ${this.formatDefaultValue(column.default)}`
|
|
114
|
+
: '';
|
|
115
|
+
return `${name} ${type}${length}${primary}${unique}${nullable}${defaultVal}`;
|
|
116
|
+
}
|
|
117
|
+
formatAlterTable(tableName, alterations) {
|
|
118
|
+
return `ALTER TABLE ${this.quoteIdentifier(tableName)} ${alterations.join(', ')}`;
|
|
119
|
+
}
|
|
120
|
+
formatDropTable(tableName, ifExists) {
|
|
121
|
+
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
122
|
+
return `DROP TABLE ${ifExistsClause}${this.quoteIdentifier(tableName)}`;
|
|
123
|
+
}
|
|
124
|
+
formatDropIndex(indexName, tableName, ifExists) {
|
|
125
|
+
const ifExistsClause = ifExists ? 'IF EXISTS ' : '';
|
|
126
|
+
return `DROP INDEX ${ifExistsClause}${this.quoteIdentifier(indexName)}`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
Registry.register('pg', (config, schemas) => {
|
|
130
|
+
return new RelatedDatabase(new PostgreSQLDialect(config), schemas);
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=pg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/dialects/pg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Dialect } from "../base";
|
|
2
|
+
import type { RedisClientOptions } from 'redis';
|
|
3
|
+
import { BuildQueryResult, KeyValueQueryResult, DatabaseDialect, QueryParams } from "../types";
|
|
4
|
+
export interface RedisDialectConfig extends RedisClientOptions {
|
|
5
|
+
}
|
|
6
|
+
export declare class RedisDialect extends Dialect<RedisDialectConfig, KeyValueQueryResult> {
|
|
7
|
+
private client;
|
|
8
|
+
constructor(config: RedisDialectConfig);
|
|
9
|
+
/**
|
|
10
|
+
* 检查是否已连接
|
|
11
|
+
*/
|
|
12
|
+
isConnected(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* 连接数据库
|
|
15
|
+
*/
|
|
16
|
+
connect(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* 断开连接
|
|
19
|
+
*/
|
|
20
|
+
disconnect(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 健康检查
|
|
23
|
+
*/
|
|
24
|
+
healthCheck(): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* 启动连接
|
|
27
|
+
*/
|
|
28
|
+
start(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* 停止连接
|
|
31
|
+
*/
|
|
32
|
+
stop(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* 释放资源
|
|
35
|
+
*/
|
|
36
|
+
dispose(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* 执行查询
|
|
39
|
+
*/
|
|
40
|
+
query<T = any>(query: KeyValueQueryResult, params?: any[]): Promise<T>;
|
|
41
|
+
/**
|
|
42
|
+
* 构建查询
|
|
43
|
+
*/
|
|
44
|
+
buildQuery<U extends object = any>(params: QueryParams<U>): BuildQueryResult<KeyValueQueryResult>;
|
|
45
|
+
mapColumnType(type: string): string;
|
|
46
|
+
quoteIdentifier(identifier: string): string;
|
|
47
|
+
getParameterPlaceholder(index: number): string;
|
|
48
|
+
getStatementTerminator(): string;
|
|
49
|
+
formatBoolean(value: boolean): string;
|
|
50
|
+
formatDate(value: Date): string;
|
|
51
|
+
formatJson(value: any): string;
|
|
52
|
+
escapeString(value: string): string;
|
|
53
|
+
formatDefaultValue(value: any): string;
|
|
54
|
+
formatLimit(limit: number): string;
|
|
55
|
+
formatOffset(offset: number): string;
|
|
56
|
+
formatLimitOffset(limit: number, offset: number): string;
|
|
57
|
+
formatCreateTable(tableName: string, columns: string[]): string;
|
|
58
|
+
formatAlterTable(tableName: string, alterations: string[]): string;
|
|
59
|
+
formatDropTable(tableName: string, ifExists?: boolean): string;
|
|
60
|
+
formatDropIndex(indexName: string, tableName: string, ifExists?: boolean): string;
|
|
61
|
+
private buildCreateQuery;
|
|
62
|
+
private buildSelectQuery;
|
|
63
|
+
private buildInsertQuery;
|
|
64
|
+
private buildUpdateQuery;
|
|
65
|
+
private buildDeleteQuery;
|
|
66
|
+
private buildAlterQuery;
|
|
67
|
+
private buildDropTableQuery;
|
|
68
|
+
private buildDropIndexQuery;
|
|
69
|
+
private extractKeyFromCondition;
|
|
70
|
+
private extractKeyFromData;
|
|
71
|
+
private executeGet;
|
|
72
|
+
private executeSet;
|
|
73
|
+
private executeDelete;
|
|
74
|
+
private executeHas;
|
|
75
|
+
private executeKeys;
|
|
76
|
+
private executeValues;
|
|
77
|
+
private executeEntries;
|
|
78
|
+
private executeClear;
|
|
79
|
+
private executeSize;
|
|
80
|
+
private executeExpire;
|
|
81
|
+
private executeTtl;
|
|
82
|
+
private executePersist;
|
|
83
|
+
private executeCleanup;
|
|
84
|
+
private executeKeysByPattern;
|
|
85
|
+
get dialectInfo(): DatabaseDialect;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/dialects/redis.ts"],"names":[],"mappings":"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"}
|