fdb2 1.0.8 → 1.0.9
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/.dockerignore +21 -21
- package/.editorconfig +11 -11
- package/.eslintrc.cjs +14 -14
- package/.eslintrc.json +7 -7
- package/.prettierrc.js +3 -3
- package/.tpl.env +21 -21
- package/.vscodeignore +45 -45
- package/README.md +312 -312
- package/bin/build.sh +28 -28
- package/bin/deploy.sh +8 -8
- package/bin/dev.sh +10 -10
- package/bin/docker/dev-docker-compose.yml +43 -43
- package/bin/docker/dev.Dockerfile +24 -24
- package/bin/docker/prod-docker-compose.yml +17 -17
- package/bin/docker/prod.Dockerfile +29 -29
- package/bin/fdb2.js +220 -220
- package/dist/package.json +29 -29
- package/dist/pnpm-lock.yaml +1042 -354
- package/dist/public/explorer.css +1464 -1437
- package/dist/public/explorer.js +759 -223
- package/dist/public/index.css +1026 -1026
- package/dist/public/index.js +15 -9
- package/dist/public/layout.css +221 -221
- package/dist/public/layout.js +1 -1
- package/dist/public/vue.js +8 -2
- package/dist/scripts/preinstall.js +112 -112
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.ts +680 -671
- package/dist/server/model/connection.entity.ts +65 -65
- package/dist/server/model/database.entity.ts +245 -245
- package/dist/server/service/connection.service.d.ts +6 -1
- package/dist/server/service/connection.service.d.ts.map +1 -1
- package/dist/server/service/connection.service.js +15 -0
- package/dist/server/service/connection.service.js.map +1 -1
- package/dist/server/service/connection.service.ts +356 -341
- package/dist/server/service/database/base.service.d.ts +27 -0
- package/dist/server/service/database/base.service.d.ts.map +1 -1
- package/dist/server/service/database/base.service.js +17 -0
- package/dist/server/service/database/base.service.js.map +1 -1
- package/dist/server/service/database/base.service.ts +406 -367
- package/dist/server/service/database/cockroachdb.service.d.ts +16 -0
- package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -1
- package/dist/server/service/database/cockroachdb.service.js +220 -154
- package/dist/server/service/database/cockroachdb.service.js.map +1 -1
- package/dist/server/service/database/cockroachdb.service.ts +871 -782
- package/dist/server/service/database/database.service.d.ts +4 -0
- package/dist/server/service/database/database.service.d.ts.map +1 -1
- package/dist/server/service/database/database.service.js +123 -0
- package/dist/server/service/database/database.service.js.map +1 -1
- package/dist/server/service/database/database.service.ts +775 -638
- package/dist/server/service/database/index.ts +6 -6
- package/dist/server/service/database/mongodb.service.d.ts +16 -0
- package/dist/server/service/database/mongodb.service.d.ts.map +1 -1
- package/dist/server/service/database/mongodb.service.js +35 -0
- package/dist/server/service/database/mongodb.service.js.map +1 -1
- package/dist/server/service/database/mongodb.service.ts +39 -1
- package/dist/server/service/database/mssql.service.d.ts +16 -0
- package/dist/server/service/database/mssql.service.d.ts.map +1 -1
- package/dist/server/service/database/mssql.service.js +168 -96
- package/dist/server/service/database/mssql.service.js.map +1 -1
- package/dist/server/service/database/mssql.service.ts +931 -840
- package/dist/server/service/database/mysql.service.d.ts +16 -0
- package/dist/server/service/database/mysql.service.d.ts.map +1 -1
- package/dist/server/service/database/mysql.service.js +189 -80
- package/dist/server/service/database/mysql.service.js.map +1 -1
- package/dist/server/service/database/mysql.service.ts +1025 -890
- package/dist/server/service/database/oracle.service.d.ts +16 -0
- package/dist/server/service/database/oracle.service.d.ts.map +1 -1
- package/dist/server/service/database/oracle.service.js +182 -120
- package/dist/server/service/database/oracle.service.js.map +1 -1
- package/dist/server/service/database/oracle.service.ts +1035 -959
- package/dist/server/service/database/postgres.service.d.ts +16 -0
- package/dist/server/service/database/postgres.service.d.ts.map +1 -1
- package/dist/server/service/database/postgres.service.js +154 -88
- package/dist/server/service/database/postgres.service.js.map +1 -1
- package/dist/server/service/database/postgres.service.ts +960 -871
- package/dist/server/service/database/sap.service.d.ts +16 -0
- package/dist/server/service/database/sap.service.d.ts.map +1 -1
- package/dist/server/service/database/sap.service.js +66 -0
- package/dist/server/service/database/sap.service.js.map +1 -1
- package/dist/server/service/database/sap.service.ts +89 -0
- package/dist/server/service/database/sqlite.service.d.ts +16 -0
- package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
- package/dist/server/service/database/sqlite.service.js +77 -18
- package/dist/server/service/database/sqlite.service.js.map +1 -1
- package/dist/server/service/database/sqlite.service.ts +787 -708
- package/dist/server/service/session.service.ts +158 -158
- package/dist/view/index.html +38 -38
- package/env.d.ts +1 -1
- package/package.json +1 -1
- package/packages/vscode/.vscodeignore +44 -44
- package/packages/vscode/README.md +62 -62
- package/packages/vscode/out/database-services/cockroachdb.service.js +154 -154
- package/packages/vscode/out/database-services/mssql.service.js +96 -96
- package/packages/vscode/out/database-services/mysql.service.js +80 -80
- package/packages/vscode/out/database-services/oracle.service.js +120 -120
- package/packages/vscode/out/database-services/postgres.service.js +88 -88
- package/packages/vscode/out/database-services/sqlite.service.js +18 -18
- package/packages/vscode/out/provider/WebViewProvider.js +32 -32
- package/packages/vscode/package.json +142 -142
- package/packages/vscode/resources/icon.svg +5 -5
- package/packages/vscode/resources/webview/connection.css +41 -41
- package/packages/vscode/resources/webview/database.css +163 -163
- package/packages/vscode/resources/webview/index.html +9 -9
- package/packages/vscode/resources/webview/modules/header.tpl +13 -13
- package/packages/vscode/resources/webview/modules/initial_state.tpl +54 -54
- package/packages/vscode/resources/webview/query.css +104 -104
- package/packages/vscode/src/database-services/base.service.ts +362 -362
- package/packages/vscode/src/database-services/cockroachdb.service.ts +659 -659
- package/packages/vscode/src/database-services/connection.service.ts +340 -340
- package/packages/vscode/src/database-services/database.service.ts +629 -629
- package/packages/vscode/src/database-services/index.ts +6 -6
- package/packages/vscode/src/database-services/model/connection.entity.ts +65 -65
- package/packages/vscode/src/database-services/model/database.entity.ts +245 -245
- package/packages/vscode/src/database-services/mssql.service.ts +722 -722
- package/packages/vscode/src/database-services/mysql.service.ts +760 -760
- package/packages/vscode/src/database-services/oracle.service.ts +831 -831
- package/packages/vscode/src/database-services/postgres.service.ts +740 -740
- package/packages/vscode/src/database-services/sqlite.service.ts +558 -558
- package/packages/vscode/src/extension.ts +76 -76
- package/packages/vscode/src/provider/DatabaseTreeProvider.ts +167 -167
- package/packages/vscode/src/provider/WebViewProvider.ts +277 -277
- package/packages/vscode/src/service/DatabaseServiceBridge.ts +414 -414
- package/packages/vscode/src/typings/connection.ts +90 -90
- package/packages/vscode/tsconfig.json +21 -21
- package/public/index.html +9 -9
- package/public/modules/header.tpl +13 -13
- package/public/modules/initial_state.tpl +54 -54
- package/scripts/preinstall.js +112 -112
- package/server/index.ts +680 -671
- package/server/model/connection.entity.ts +65 -65
- package/server/model/database.entity.ts +245 -245
- package/server/service/connection.service.ts +356 -341
- package/server/service/database/base.service.ts +406 -367
- package/server/service/database/cockroachdb.service.ts +871 -782
- package/server/service/database/database.service.ts +775 -638
- package/server/service/database/index.ts +6 -6
- package/server/service/database/mongodb.service.ts +39 -1
- package/server/service/database/mssql.service.ts +931 -840
- package/server/service/database/mysql.service.ts +1025 -890
- package/server/service/database/oracle.service.ts +1035 -959
- package/server/service/database/postgres.service.ts +960 -871
- package/server/service/database/sap.service.ts +89 -0
- package/server/service/database/sqlite.service.ts +787 -708
- package/server/service/session.service.ts +158 -158
- package/server/tsconfig.json +20 -20
- package/server.js +149 -149
- package/server.pid +1 -0
- package/src/adapter/ajax.ts +135 -135
- package/src/assets/base.css +1 -1
- package/src/assets/database.css +949 -949
- package/src/assets/images/svg/illustrations/illustration-1.svg +1 -1
- package/src/assets/images/svg/illustrations/illustration-2.svg +2 -2
- package/src/assets/images/svg/illustrations/illustration-3.svg +50 -50
- package/src/assets/images/svg/illustrations/illustration-4.svg +1 -1
- package/src/assets/images/svg/illustrations/illustration-5.svg +73 -73
- package/src/assets/images/svg/illustrations/illustration-6.svg +89 -89
- package/src/assets/images/svg/illustrations/illustration-7.svg +39 -39
- package/src/assets/images/svg/separators/curve-2.svg +3 -3
- package/src/assets/images/svg/separators/curve.svg +3 -3
- package/src/assets/images/svg/separators/line.svg +3 -3
- package/src/assets/logo.svg +73 -73
- package/src/assets/main.css +1 -1
- package/src/base/config.ts +20 -20
- package/src/base/detect.ts +134 -134
- package/src/base/entity.ts +92 -92
- package/src/base/eventBus.ts +36 -36
- package/src/components/connection-editor/index.vue +588 -588
- package/src/components/dataGrid/index.vue +104 -104
- package/src/components/dataGrid/pagination.vue +105 -105
- package/src/components/loading/index.vue +42 -42
- package/src/components/modal/index.ts +180 -180
- package/src/components/modal/index.vue +560 -560
- package/src/components/toast/index.ts +43 -43
- package/src/components/toast/toast.vue +57 -57
- package/src/components/user/name.vue +103 -103
- package/src/components/user/selector.vue +416 -416
- package/src/domain/SysConfig.ts +74 -74
- package/src/platform/App.vue +7 -7
- package/src/platform/database/components/connection-detail.vue +1153 -1154
- package/src/platform/database/components/data-editor.vue +477 -477
- package/src/platform/database/components/database-detail.vue +1173 -1172
- package/src/platform/database/components/database-monitor.vue +1085 -1085
- package/src/platform/database/components/db-tools.vue +1264 -816
- package/src/platform/database/components/query-history.vue +1348 -1348
- package/src/platform/database/components/sql-executor.vue +737 -737
- package/src/platform/database/components/sql-query-editor.vue +1045 -1045
- package/src/platform/database/components/table-detail.vue +1375 -1376
- package/src/platform/database/components/table-editor.vue +916 -916
- package/src/platform/database/explorer.vue +1839 -1839
- package/src/platform/database/index.vue +1192 -1192
- package/src/platform/database/layout.vue +366 -366
- package/src/platform/database/router.ts +36 -36
- package/src/platform/database/styles/common.scss +601 -601
- package/src/platform/database/types/common.ts +444 -444
- package/src/platform/database/utils/export.ts +231 -231
- package/src/platform/database/utils/helpers.ts +436 -436
- package/src/platform/index.ts +32 -32
- package/src/platform/router.ts +40 -40
- package/src/platform/vscode/bridge.ts +121 -121
- package/src/platform/vscode/components/ConnectionPanel.vue +272 -272
- package/src/platform/vscode/components/DatabasePanel.vue +532 -532
- package/src/platform/vscode/components/QueryPanel.vue +371 -371
- package/src/platform/vscode/entry/connection.ts +13 -13
- package/src/platform/vscode/entry/database.ts +13 -13
- package/src/platform/vscode/entry/query.ts +13 -13
- package/src/platform/vscode/index.ts +5 -5
- package/src/service/base.ts +133 -127
- package/src/service/database.ts +505 -495
- package/src/service/login.ts +120 -120
- package/src/shims-vue.d.ts +6 -6
- package/src/stores/connection.ts +266 -266
- package/src/stores/session.ts +87 -87
- package/src/typings/database-types.ts +412 -412
- package/src/typings/database.ts +363 -363
- package/src/typings/global.d.ts +58 -58
- package/src/typings/pinia.d.ts +7 -7
- package/src/utils/clipboard.ts +29 -29
- package/src/utils/database-types.ts +242 -242
- package/src/utils/modal.ts +123 -123
- package/src/utils/request.ts +55 -55
- package/src/utils/sleep.ts +3 -3
- package/src/utils/toast.ts +73 -73
- package/src/utils/util.ts +171 -171
- package/src/utils/xlsx.ts +228 -228
- package/tsconfig.json +33 -33
- package/view/index.html +9 -9
- package/view/modules/header.tpl +13 -13
- package/view/modules/initial_state.tpl +19 -19
- package/vite.config.ts +424 -424
- package/vite.config.vscode.ts +47 -47
- package/fdb2.server.pid +0 -1
- package/server/backups/db_ai_breakout_2026-03-11T08-38-48-677Z.sql +0 -0
package/src/service/database.ts
CHANGED
|
@@ -1,496 +1,506 @@
|
|
|
1
|
-
import { request } from '@/service/base';
|
|
2
|
-
import type { ConnectionEntity, DatabaseEntity, TableEntity, ColumnEntity, IndexEntity, ForeignKeyEntity } from '@/typings/database';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 数据库连接管理服务
|
|
6
|
-
*/
|
|
7
|
-
export class ConnectionService {
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* 获取所有数据库连接配置
|
|
11
|
-
*/
|
|
12
|
-
async getAllConnections() {
|
|
13
|
-
return request('/api/database/getConnections', {});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 根据ID获取数据库连接配置
|
|
18
|
-
*/
|
|
19
|
-
async getConnectionById(id: string) {
|
|
20
|
-
return request('/api/database/getConnection', { id });
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 添加数据库连接配置
|
|
25
|
-
*/
|
|
26
|
-
async addConnection(connection: ConnectionEntity) {
|
|
27
|
-
return request('/api/database/addConnection', connection);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* 更新数据库连接配置
|
|
32
|
-
*/
|
|
33
|
-
async updateConnection(id: string, updates: Partial<ConnectionEntity>) {
|
|
34
|
-
return request('/api/database/updateConnection', { id, ...updates });
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* 删除数据库连接配置
|
|
39
|
-
*/
|
|
40
|
-
async deleteConnection(id: string) {
|
|
41
|
-
return request('/api/database/deleteConnection', { id });
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* 测试数据库连接
|
|
46
|
-
*/
|
|
47
|
-
async testConnection(connection: ConnectionEntity) {
|
|
48
|
-
return request('/api/database/testConnection', connection);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* 获取支持的数据库类型
|
|
53
|
-
*/
|
|
54
|
-
async getDatabaseTypes() {
|
|
55
|
-
return request('/api/database/getSupportedDatabaseTypes');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 创建数据库
|
|
60
|
-
*/
|
|
61
|
-
async createDatabase(connectionId: string, databaseName: string, options?: any) {
|
|
62
|
-
return request('/api/database/createDatabase', {
|
|
63
|
-
id: connectionId,
|
|
64
|
-
databaseName,
|
|
65
|
-
options
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* 删除数据库
|
|
71
|
-
*/
|
|
72
|
-
async dropDatabase(connectionId: string, databaseName: string) {
|
|
73
|
-
return request('/api/database/dropDatabase', {
|
|
74
|
-
id: connectionId,
|
|
75
|
-
databaseName
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* 数据库管理服务
|
|
82
|
-
*/
|
|
83
|
-
export class DatabaseService {
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* 获取数据库列表
|
|
87
|
-
*/
|
|
88
|
-
async getDatabases(connectionId: string) {
|
|
89
|
-
return request('/api/database/getDatabases', { id: connectionId });
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* 获取数据库详细信息
|
|
94
|
-
*/
|
|
95
|
-
async getDatabaseInfo(connectionId: string, databaseName: string) {
|
|
96
|
-
return request('/api/database/getDatabaseInfo', { id: connectionId, database: databaseName });
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* 获取数据库表列表
|
|
101
|
-
*/
|
|
102
|
-
async getTables(connectionId: string, databaseName: string) {
|
|
103
|
-
return request('/api/database/getTables', { id: connectionId, database: databaseName });
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* 获取表详细信息
|
|
108
|
-
*/
|
|
109
|
-
async getTableInfo(connectionId: string, databaseName: string, tableName: string) {
|
|
110
|
-
return request('/api/database/getTableInfo', { id: connectionId, database: databaseName, table: tableName });
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* 获取表数据
|
|
115
|
-
*/
|
|
116
|
-
async getTableData(
|
|
117
|
-
connectionId: string,
|
|
118
|
-
databaseName: string,
|
|
119
|
-
tableName: string,
|
|
120
|
-
page: number = 1,
|
|
121
|
-
pageSize: number = 100,
|
|
122
|
-
where?: string,
|
|
123
|
-
orderBy?: string
|
|
124
|
-
) {
|
|
125
|
-
const params = {
|
|
126
|
-
id: connectionId,
|
|
127
|
-
database: databaseName,
|
|
128
|
-
table: tableName,
|
|
129
|
-
page,
|
|
130
|
-
pageSize,
|
|
131
|
-
where,
|
|
132
|
-
orderBy
|
|
133
|
-
};
|
|
134
|
-
return request('/api/database/getTableData', params);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* 执行SQL查询
|
|
139
|
-
*/
|
|
140
|
-
async executeQuery(connectionId: string, sql: string, databaseName?: string) {
|
|
141
|
-
return request('/api/database/executeQuery', { id: connectionId, sql, database: databaseName });
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* 关闭数据库连接
|
|
146
|
-
*/
|
|
147
|
-
async closeConnection(connectionId: string) {
|
|
148
|
-
return request('/api/database/closeConnection', { id: connectionId });
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* 导出表数据
|
|
153
|
-
*/
|
|
154
|
-
async exportTableData(
|
|
155
|
-
connectionId: string,
|
|
156
|
-
databaseName: string,
|
|
157
|
-
tableName: string,
|
|
158
|
-
format: string = 'json',
|
|
159
|
-
where?: string
|
|
160
|
-
) {
|
|
161
|
-
return request('/api/database/exportTableData', {
|
|
162
|
-
id: connectionId,
|
|
163
|
-
database: databaseName,
|
|
164
|
-
table: tableName,
|
|
165
|
-
format,
|
|
166
|
-
where
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* 导出表数据到SQL文件
|
|
172
|
-
*/
|
|
173
|
-
async exportTableDataToSQL(
|
|
174
|
-
connectionId: string,
|
|
175
|
-
databaseName: string,
|
|
176
|
-
tableName: string,
|
|
177
|
-
options?: any
|
|
178
|
-
) {
|
|
179
|
-
return request('/api/database/exportTableDataToSQL', {
|
|
180
|
-
id: connectionId,
|
|
181
|
-
database: databaseName,
|
|
182
|
-
table: tableName,
|
|
183
|
-
options
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* 导出表数据到CSV文件
|
|
189
|
-
*/
|
|
190
|
-
async exportTableDataToCSV(
|
|
191
|
-
connectionId: string,
|
|
192
|
-
databaseName: string,
|
|
193
|
-
tableName: string,
|
|
194
|
-
options?: any
|
|
195
|
-
) {
|
|
196
|
-
return request('/api/database/exportTableDataToCSV', {
|
|
197
|
-
id: connectionId,
|
|
198
|
-
database: databaseName,
|
|
199
|
-
table: tableName,
|
|
200
|
-
options
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* 导出表数据到JSON文件
|
|
206
|
-
*/
|
|
207
|
-
async exportTableDataToJSON(
|
|
208
|
-
connectionId: string,
|
|
209
|
-
databaseName: string,
|
|
210
|
-
tableName: string,
|
|
211
|
-
options?: any
|
|
212
|
-
) {
|
|
213
|
-
return request('/api/database/exportTableDataToJSON', {
|
|
214
|
-
id: connectionId,
|
|
215
|
-
database: databaseName,
|
|
216
|
-
table: tableName,
|
|
217
|
-
options
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* 导出表数据到Excel文件
|
|
223
|
-
*/
|
|
224
|
-
async exportTableDataToExcel(
|
|
225
|
-
connectionId: string,
|
|
226
|
-
databaseName: string,
|
|
227
|
-
tableName: string,
|
|
228
|
-
options?: any
|
|
229
|
-
) {
|
|
230
|
-
return request('/api/database/exportTableDataToExcel', {
|
|
231
|
-
id: connectionId,
|
|
232
|
-
database: databaseName,
|
|
233
|
-
table: tableName,
|
|
234
|
-
options
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* 保存表结构(新建表)
|
|
240
|
-
*/
|
|
241
|
-
async saveTableStructure(
|
|
242
|
-
connectionId: string,
|
|
243
|
-
database: string,
|
|
244
|
-
table: any,
|
|
245
|
-
columns: any[]
|
|
246
|
-
) {
|
|
247
|
-
return request('/api/database/saveTableStructure', {
|
|
248
|
-
id: connectionId,
|
|
249
|
-
database,
|
|
250
|
-
table,
|
|
251
|
-
columns
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* 修改表结构
|
|
257
|
-
*/
|
|
258
|
-
async alterTable(
|
|
259
|
-
connectionId: string,
|
|
260
|
-
database: string,
|
|
261
|
-
tableDiff: any
|
|
262
|
-
) {
|
|
263
|
-
return request('/api/database/alterTable', {
|
|
264
|
-
id: connectionId,
|
|
265
|
-
database,
|
|
266
|
-
tableDiff
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* 插入数据
|
|
272
|
-
*/
|
|
273
|
-
async insertData(
|
|
274
|
-
connectionId: string,
|
|
275
|
-
database: string,
|
|
276
|
-
tableName: string,
|
|
277
|
-
data: any
|
|
278
|
-
) {
|
|
279
|
-
return request('/api/database/insertData', {
|
|
280
|
-
id: connectionId,
|
|
281
|
-
database,
|
|
282
|
-
table: tableName,
|
|
283
|
-
data
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* 更新数据
|
|
289
|
-
*/
|
|
290
|
-
async updateData(
|
|
291
|
-
connectionId: string,
|
|
292
|
-
database: string,
|
|
293
|
-
tableName: string,
|
|
294
|
-
data: any,
|
|
295
|
-
where: any
|
|
296
|
-
) {
|
|
297
|
-
return request('/api/database/updateData', {
|
|
298
|
-
id: connectionId,
|
|
299
|
-
database,
|
|
300
|
-
table: tableName,
|
|
301
|
-
data,
|
|
302
|
-
where
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* 删除数据
|
|
308
|
-
*/
|
|
309
|
-
async deleteData(
|
|
310
|
-
connectionId: string,
|
|
311
|
-
database: string,
|
|
312
|
-
tableName: string,
|
|
313
|
-
where: any
|
|
314
|
-
) {
|
|
315
|
-
return request('/api/database/deleteData', {
|
|
316
|
-
id: connectionId,
|
|
317
|
-
database,
|
|
318
|
-
table: tableName,
|
|
319
|
-
where
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/**
|
|
324
|
-
* 截断表
|
|
325
|
-
*/
|
|
326
|
-
async truncateTable(
|
|
327
|
-
connectionId: string,
|
|
328
|
-
database: string,
|
|
329
|
-
tableName: string
|
|
330
|
-
) {
|
|
331
|
-
return request(`/api/database/truncateTable/${connectionId}/${database}/${tableName}`);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* 删除表
|
|
336
|
-
*/
|
|
337
|
-
async dropTable(
|
|
338
|
-
connectionId: string,
|
|
339
|
-
database: string,
|
|
340
|
-
tableName: string
|
|
341
|
-
) {
|
|
342
|
-
return request(`/api/database/dropTable/${connectionId}/${database}/${tableName}`);
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* 数据库备份
|
|
347
|
-
*/
|
|
348
|
-
async backupDatabase(
|
|
349
|
-
connectionId: string,
|
|
350
|
-
database: string,
|
|
351
|
-
options?: any
|
|
352
|
-
) {
|
|
353
|
-
return request('/api/database/backup', { id: connectionId, databaseName: database, options });
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* 恢复数据库
|
|
358
|
-
*/
|
|
359
|
-
async restoreDatabase(
|
|
360
|
-
connectionId: string,
|
|
361
|
-
database: string,
|
|
362
|
-
filePath: string,
|
|
363
|
-
options?: any
|
|
364
|
-
) {
|
|
365
|
-
return request('/api/database/restore', { id: connectionId, databaseName: database, filePath, options });
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* 获取数据库统计信息
|
|
370
|
-
*/
|
|
371
|
-
async getDatabaseStats(
|
|
372
|
-
connectionId: string,
|
|
373
|
-
database: string
|
|
374
|
-
) {
|
|
375
|
-
return request('/api/database/getStats', { id: connectionId, databaseName: database });
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* 优化数据库
|
|
380
|
-
*/
|
|
381
|
-
async optimizeDatabase(
|
|
382
|
-
connectionId: string,
|
|
383
|
-
database: string
|
|
384
|
-
) {
|
|
385
|
-
return request('/api/database/optimize', { id: connectionId, databaseName: database });
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* 分析表
|
|
390
|
-
*/
|
|
391
|
-
async analyzeTables(
|
|
392
|
-
connectionId: string,
|
|
393
|
-
database: string
|
|
394
|
-
) {
|
|
395
|
-
return request('/api/database/analyze', { id: connectionId, databaseName: database });
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* 修复表
|
|
400
|
-
*/
|
|
401
|
-
async repairTables(
|
|
402
|
-
connectionId: string,
|
|
403
|
-
database: string
|
|
404
|
-
) {
|
|
405
|
-
return request('/api/database/repair', { id: connectionId, databaseName: database });
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* 检查数据库健康状态
|
|
410
|
-
*/
|
|
411
|
-
async checkDatabaseHealth(
|
|
412
|
-
connectionId: string,
|
|
413
|
-
database: string
|
|
414
|
-
) {
|
|
415
|
-
return request(`/api/database/health/${connectionId}/${database}`);
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* 获取视图列表
|
|
420
|
-
*/
|
|
421
|
-
async getViews(connectionId: string, databaseName: string) {
|
|
422
|
-
return request('/api/database/getViews', { id: connectionId, database: databaseName });
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* 获取视图定义
|
|
427
|
-
*/
|
|
428
|
-
async getViewDefinition(connectionId: string, databaseName: string, viewName: string) {
|
|
429
|
-
return request('/api/database/getViewDefinition', { id: connectionId, database: databaseName, viewName });
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/**
|
|
433
|
-
* 创建视图
|
|
434
|
-
*/
|
|
435
|
-
async createView(connectionId: string, databaseName: string, viewName: string, definition: string) {
|
|
436
|
-
return request('/api/database/createView', {
|
|
437
|
-
id: connectionId,
|
|
438
|
-
database: databaseName,
|
|
439
|
-
viewName,
|
|
440
|
-
definition
|
|
441
|
-
});
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
/**
|
|
445
|
-
* 删除视图
|
|
446
|
-
*/
|
|
447
|
-
async dropView(connectionId: string, databaseName: string, viewName: string) {
|
|
448
|
-
return request('/api/database/dropView', {
|
|
449
|
-
id: connectionId,
|
|
450
|
-
database: databaseName,
|
|
451
|
-
viewName
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/**
|
|
456
|
-
* 获取存储过程列表
|
|
457
|
-
*/
|
|
458
|
-
async getProcedures(connectionId: string, databaseName: string) {
|
|
459
|
-
return request('/api/database/getProcedures', { id: connectionId, database: databaseName });
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
/**
|
|
463
|
-
* 获取存储过程定义
|
|
464
|
-
*/
|
|
465
|
-
async getProcedureDefinition(connectionId: string, databaseName: string, procedureName: string) {
|
|
466
|
-
return request('/api/database/getProcedureDefinition', {
|
|
467
|
-
id: connectionId,
|
|
468
|
-
database: databaseName,
|
|
469
|
-
procedureName
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* 创建存储过程
|
|
475
|
-
*/
|
|
476
|
-
async createProcedure(connectionId: string, databaseName: string, procedureName: string, definition: string) {
|
|
477
|
-
const sql = `CREATE PROCEDURE \`${procedureName}\` ${definition}`;
|
|
478
|
-
return request('/api/database/executeQuery', {
|
|
479
|
-
id: connectionId,
|
|
480
|
-
sql,
|
|
481
|
-
database: databaseName
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* 删除存储过程
|
|
487
|
-
*/
|
|
488
|
-
async dropProcedure(connectionId: string, databaseName: string, procedureName: string) {
|
|
489
|
-
const sql = `DROP PROCEDURE \`${procedureName}\``;
|
|
490
|
-
return request('/api/database/executeQuery', {
|
|
491
|
-
id: connectionId,
|
|
492
|
-
sql,
|
|
493
|
-
database: databaseName
|
|
494
|
-
});
|
|
495
|
-
}
|
|
1
|
+
import { request } from '@/service/base';
|
|
2
|
+
import type { ConnectionEntity, DatabaseEntity, TableEntity, ColumnEntity, IndexEntity, ForeignKeyEntity } from '@/typings/database';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 数据库连接管理服务
|
|
6
|
+
*/
|
|
7
|
+
export class ConnectionService {
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 获取所有数据库连接配置
|
|
11
|
+
*/
|
|
12
|
+
async getAllConnections() {
|
|
13
|
+
return request('/api/database/getConnections', {});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 根据ID获取数据库连接配置
|
|
18
|
+
*/
|
|
19
|
+
async getConnectionById(id: string) {
|
|
20
|
+
return request('/api/database/getConnection', { id });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* 添加数据库连接配置
|
|
25
|
+
*/
|
|
26
|
+
async addConnection(connection: ConnectionEntity) {
|
|
27
|
+
return request('/api/database/addConnection', connection);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 更新数据库连接配置
|
|
32
|
+
*/
|
|
33
|
+
async updateConnection(id: string, updates: Partial<ConnectionEntity>) {
|
|
34
|
+
return request('/api/database/updateConnection', { id, ...updates });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 删除数据库连接配置
|
|
39
|
+
*/
|
|
40
|
+
async deleteConnection(id: string) {
|
|
41
|
+
return request('/api/database/deleteConnection', { id });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 测试数据库连接
|
|
46
|
+
*/
|
|
47
|
+
async testConnection(connection: ConnectionEntity) {
|
|
48
|
+
return request('/api/database/testConnection', connection);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 获取支持的数据库类型
|
|
53
|
+
*/
|
|
54
|
+
async getDatabaseTypes() {
|
|
55
|
+
return request('/api/database/getSupportedDatabaseTypes');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 创建数据库
|
|
60
|
+
*/
|
|
61
|
+
async createDatabase(connectionId: string, databaseName: string, options?: any) {
|
|
62
|
+
return request('/api/database/createDatabase', {
|
|
63
|
+
id: connectionId,
|
|
64
|
+
databaseName,
|
|
65
|
+
options
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 删除数据库
|
|
71
|
+
*/
|
|
72
|
+
async dropDatabase(connectionId: string, databaseName: string) {
|
|
73
|
+
return request('/api/database/dropDatabase', {
|
|
74
|
+
id: connectionId,
|
|
75
|
+
databaseName
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 数据库管理服务
|
|
82
|
+
*/
|
|
83
|
+
export class DatabaseService {
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 获取数据库列表
|
|
87
|
+
*/
|
|
88
|
+
async getDatabases(connectionId: string) {
|
|
89
|
+
return request('/api/database/getDatabases', { id: connectionId });
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* 获取数据库详细信息
|
|
94
|
+
*/
|
|
95
|
+
async getDatabaseInfo(connectionId: string, databaseName: string) {
|
|
96
|
+
return request('/api/database/getDatabaseInfo', { id: connectionId, database: databaseName });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* 获取数据库表列表
|
|
101
|
+
*/
|
|
102
|
+
async getTables(connectionId: string, databaseName: string) {
|
|
103
|
+
return request('/api/database/getTables', { id: connectionId, database: databaseName });
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* 获取表详细信息
|
|
108
|
+
*/
|
|
109
|
+
async getTableInfo(connectionId: string, databaseName: string, tableName: string) {
|
|
110
|
+
return request('/api/database/getTableInfo', { id: connectionId, database: databaseName, table: tableName });
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 获取表数据
|
|
115
|
+
*/
|
|
116
|
+
async getTableData(
|
|
117
|
+
connectionId: string,
|
|
118
|
+
databaseName: string,
|
|
119
|
+
tableName: string,
|
|
120
|
+
page: number = 1,
|
|
121
|
+
pageSize: number = 100,
|
|
122
|
+
where?: string,
|
|
123
|
+
orderBy?: string
|
|
124
|
+
) {
|
|
125
|
+
const params = {
|
|
126
|
+
id: connectionId,
|
|
127
|
+
database: databaseName,
|
|
128
|
+
table: tableName,
|
|
129
|
+
page,
|
|
130
|
+
pageSize,
|
|
131
|
+
where,
|
|
132
|
+
orderBy
|
|
133
|
+
};
|
|
134
|
+
return request('/api/database/getTableData', params);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 执行SQL查询
|
|
139
|
+
*/
|
|
140
|
+
async executeQuery(connectionId: string, sql: string, databaseName?: string) {
|
|
141
|
+
return request('/api/database/executeQuery', { id: connectionId, sql, database: databaseName });
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 关闭数据库连接
|
|
146
|
+
*/
|
|
147
|
+
async closeConnection(connectionId: string) {
|
|
148
|
+
return request('/api/database/closeConnection', { id: connectionId });
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* 导出表数据
|
|
153
|
+
*/
|
|
154
|
+
async exportTableData(
|
|
155
|
+
connectionId: string,
|
|
156
|
+
databaseName: string,
|
|
157
|
+
tableName: string,
|
|
158
|
+
format: string = 'json',
|
|
159
|
+
where?: string
|
|
160
|
+
) {
|
|
161
|
+
return request('/api/database/exportTableData', {
|
|
162
|
+
id: connectionId,
|
|
163
|
+
database: databaseName,
|
|
164
|
+
table: tableName,
|
|
165
|
+
format,
|
|
166
|
+
where
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* 导出表数据到SQL文件
|
|
172
|
+
*/
|
|
173
|
+
async exportTableDataToSQL(
|
|
174
|
+
connectionId: string,
|
|
175
|
+
databaseName: string,
|
|
176
|
+
tableName: string,
|
|
177
|
+
options?: any
|
|
178
|
+
) {
|
|
179
|
+
return request('/api/database/exportTableDataToSQL', {
|
|
180
|
+
id: connectionId,
|
|
181
|
+
database: databaseName,
|
|
182
|
+
table: tableName,
|
|
183
|
+
options
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* 导出表数据到CSV文件
|
|
189
|
+
*/
|
|
190
|
+
async exportTableDataToCSV(
|
|
191
|
+
connectionId: string,
|
|
192
|
+
databaseName: string,
|
|
193
|
+
tableName: string,
|
|
194
|
+
options?: any
|
|
195
|
+
) {
|
|
196
|
+
return request('/api/database/exportTableDataToCSV', {
|
|
197
|
+
id: connectionId,
|
|
198
|
+
database: databaseName,
|
|
199
|
+
table: tableName,
|
|
200
|
+
options
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* 导出表数据到JSON文件
|
|
206
|
+
*/
|
|
207
|
+
async exportTableDataToJSON(
|
|
208
|
+
connectionId: string,
|
|
209
|
+
databaseName: string,
|
|
210
|
+
tableName: string,
|
|
211
|
+
options?: any
|
|
212
|
+
) {
|
|
213
|
+
return request('/api/database/exportTableDataToJSON', {
|
|
214
|
+
id: connectionId,
|
|
215
|
+
database: databaseName,
|
|
216
|
+
table: tableName,
|
|
217
|
+
options
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* 导出表数据到Excel文件
|
|
223
|
+
*/
|
|
224
|
+
async exportTableDataToExcel(
|
|
225
|
+
connectionId: string,
|
|
226
|
+
databaseName: string,
|
|
227
|
+
tableName: string,
|
|
228
|
+
options?: any
|
|
229
|
+
) {
|
|
230
|
+
return request('/api/database/exportTableDataToExcel', {
|
|
231
|
+
id: connectionId,
|
|
232
|
+
database: databaseName,
|
|
233
|
+
table: tableName,
|
|
234
|
+
options
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* 保存表结构(新建表)
|
|
240
|
+
*/
|
|
241
|
+
async saveTableStructure(
|
|
242
|
+
connectionId: string,
|
|
243
|
+
database: string,
|
|
244
|
+
table: any,
|
|
245
|
+
columns: any[]
|
|
246
|
+
) {
|
|
247
|
+
return request('/api/database/saveTableStructure', {
|
|
248
|
+
id: connectionId,
|
|
249
|
+
database,
|
|
250
|
+
table,
|
|
251
|
+
columns
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* 修改表结构
|
|
257
|
+
*/
|
|
258
|
+
async alterTable(
|
|
259
|
+
connectionId: string,
|
|
260
|
+
database: string,
|
|
261
|
+
tableDiff: any
|
|
262
|
+
) {
|
|
263
|
+
return request('/api/database/alterTable', {
|
|
264
|
+
id: connectionId,
|
|
265
|
+
database,
|
|
266
|
+
tableDiff
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* 插入数据
|
|
272
|
+
*/
|
|
273
|
+
async insertData(
|
|
274
|
+
connectionId: string,
|
|
275
|
+
database: string,
|
|
276
|
+
tableName: string,
|
|
277
|
+
data: any
|
|
278
|
+
) {
|
|
279
|
+
return request('/api/database/insertData', {
|
|
280
|
+
id: connectionId,
|
|
281
|
+
database,
|
|
282
|
+
table: tableName,
|
|
283
|
+
data
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* 更新数据
|
|
289
|
+
*/
|
|
290
|
+
async updateData(
|
|
291
|
+
connectionId: string,
|
|
292
|
+
database: string,
|
|
293
|
+
tableName: string,
|
|
294
|
+
data: any,
|
|
295
|
+
where: any
|
|
296
|
+
) {
|
|
297
|
+
return request('/api/database/updateData', {
|
|
298
|
+
id: connectionId,
|
|
299
|
+
database,
|
|
300
|
+
table: tableName,
|
|
301
|
+
data,
|
|
302
|
+
where
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* 删除数据
|
|
308
|
+
*/
|
|
309
|
+
async deleteData(
|
|
310
|
+
connectionId: string,
|
|
311
|
+
database: string,
|
|
312
|
+
tableName: string,
|
|
313
|
+
where: any
|
|
314
|
+
) {
|
|
315
|
+
return request('/api/database/deleteData', {
|
|
316
|
+
id: connectionId,
|
|
317
|
+
database,
|
|
318
|
+
table: tableName,
|
|
319
|
+
where
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* 截断表
|
|
325
|
+
*/
|
|
326
|
+
async truncateTable(
|
|
327
|
+
connectionId: string,
|
|
328
|
+
database: string,
|
|
329
|
+
tableName: string
|
|
330
|
+
) {
|
|
331
|
+
return request(`/api/database/truncateTable/${connectionId}/${database}/${tableName}`);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* 删除表
|
|
336
|
+
*/
|
|
337
|
+
async dropTable(
|
|
338
|
+
connectionId: string,
|
|
339
|
+
database: string,
|
|
340
|
+
tableName: string
|
|
341
|
+
) {
|
|
342
|
+
return request(`/api/database/dropTable/${connectionId}/${database}/${tableName}`);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* 数据库备份
|
|
347
|
+
*/
|
|
348
|
+
async backupDatabase(
|
|
349
|
+
connectionId: string,
|
|
350
|
+
database: string,
|
|
351
|
+
options?: any
|
|
352
|
+
) {
|
|
353
|
+
return request('/api/database/backup', { id: connectionId, databaseName: database, options });
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* 恢复数据库
|
|
358
|
+
*/
|
|
359
|
+
async restoreDatabase(
|
|
360
|
+
connectionId: string,
|
|
361
|
+
database: string,
|
|
362
|
+
filePath: string,
|
|
363
|
+
options?: any
|
|
364
|
+
) {
|
|
365
|
+
return request('/api/database/restore', { id: connectionId, databaseName: database, filePath, options });
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* 获取数据库统计信息
|
|
370
|
+
*/
|
|
371
|
+
async getDatabaseStats(
|
|
372
|
+
connectionId: string,
|
|
373
|
+
database: string
|
|
374
|
+
) {
|
|
375
|
+
return request('/api/database/getStats', { id: connectionId, databaseName: database });
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* 优化数据库
|
|
380
|
+
*/
|
|
381
|
+
async optimizeDatabase(
|
|
382
|
+
connectionId: string,
|
|
383
|
+
database: string
|
|
384
|
+
) {
|
|
385
|
+
return request('/api/database/optimize', { id: connectionId, databaseName: database });
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* 分析表
|
|
390
|
+
*/
|
|
391
|
+
async analyzeTables(
|
|
392
|
+
connectionId: string,
|
|
393
|
+
database: string
|
|
394
|
+
) {
|
|
395
|
+
return request('/api/database/analyze', { id: connectionId, databaseName: database });
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* 修复表
|
|
400
|
+
*/
|
|
401
|
+
async repairTables(
|
|
402
|
+
connectionId: string,
|
|
403
|
+
database: string
|
|
404
|
+
) {
|
|
405
|
+
return request('/api/database/repair', { id: connectionId, databaseName: database });
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* 检查数据库健康状态
|
|
410
|
+
*/
|
|
411
|
+
async checkDatabaseHealth(
|
|
412
|
+
connectionId: string,
|
|
413
|
+
database: string
|
|
414
|
+
) {
|
|
415
|
+
return request(`/api/database/health/${connectionId}/${database}`);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* 获取视图列表
|
|
420
|
+
*/
|
|
421
|
+
async getViews(connectionId: string, databaseName: string) {
|
|
422
|
+
return request('/api/database/getViews', { id: connectionId, database: databaseName });
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* 获取视图定义
|
|
427
|
+
*/
|
|
428
|
+
async getViewDefinition(connectionId: string, databaseName: string, viewName: string) {
|
|
429
|
+
return request('/api/database/getViewDefinition', { id: connectionId, database: databaseName, viewName });
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* 创建视图
|
|
434
|
+
*/
|
|
435
|
+
async createView(connectionId: string, databaseName: string, viewName: string, definition: string) {
|
|
436
|
+
return request('/api/database/createView', {
|
|
437
|
+
id: connectionId,
|
|
438
|
+
database: databaseName,
|
|
439
|
+
viewName,
|
|
440
|
+
definition
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* 删除视图
|
|
446
|
+
*/
|
|
447
|
+
async dropView(connectionId: string, databaseName: string, viewName: string) {
|
|
448
|
+
return request('/api/database/dropView', {
|
|
449
|
+
id: connectionId,
|
|
450
|
+
database: databaseName,
|
|
451
|
+
viewName
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* 获取存储过程列表
|
|
457
|
+
*/
|
|
458
|
+
async getProcedures(connectionId: string, databaseName: string) {
|
|
459
|
+
return request('/api/database/getProcedures', { id: connectionId, database: databaseName });
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* 获取存储过程定义
|
|
464
|
+
*/
|
|
465
|
+
async getProcedureDefinition(connectionId: string, databaseName: string, procedureName: string) {
|
|
466
|
+
return request('/api/database/getProcedureDefinition', {
|
|
467
|
+
id: connectionId,
|
|
468
|
+
database: databaseName,
|
|
469
|
+
procedureName
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* 创建存储过程
|
|
475
|
+
*/
|
|
476
|
+
async createProcedure(connectionId: string, databaseName: string, procedureName: string, definition: string) {
|
|
477
|
+
const sql = `CREATE PROCEDURE \`${procedureName}\` ${definition}`;
|
|
478
|
+
return request('/api/database/executeQuery', {
|
|
479
|
+
id: connectionId,
|
|
480
|
+
sql,
|
|
481
|
+
database: databaseName
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* 删除存储过程
|
|
487
|
+
*/
|
|
488
|
+
async dropProcedure(connectionId: string, databaseName: string, procedureName: string) {
|
|
489
|
+
const sql = `DROP PROCEDURE \`${procedureName}\``;
|
|
490
|
+
return request('/api/database/executeQuery', {
|
|
491
|
+
id: connectionId,
|
|
492
|
+
sql,
|
|
493
|
+
database: databaseName
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* 同步表结构和数据到其他数据库
|
|
499
|
+
*/
|
|
500
|
+
async syncTable(connectionId: string, syncConfig: any) {
|
|
501
|
+
return request('/api/database/syncTable', {
|
|
502
|
+
id: connectionId,
|
|
503
|
+
syncConfig
|
|
504
|
+
});
|
|
505
|
+
}
|
|
496
506
|
}
|