fdb2 1.0.17 → 1.0.19

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.
Files changed (98) hide show
  1. package/dist/package.json +139 -0
  2. package/dist/pnpm-lock.yaml +7332 -0
  3. package/dist/public/.vite/manifest.json +102 -0
  4. package/dist/public/bootstrap-icons.woff +0 -0
  5. package/dist/public/bootstrap-icons.woff2 +0 -0
  6. package/dist/public/bootstrap.css +14152 -0
  7. package/dist/public/bootstrap.js +4717 -0
  8. package/dist/public/explorer.css +2542 -0
  9. package/dist/public/explorer.js +59311 -0
  10. package/dist/public/favicon.ico +0 -0
  11. package/dist/public/index.css +1099 -0
  12. package/dist/public/index.js +5533 -0
  13. package/dist/public/layout.css +318 -0
  14. package/dist/public/layout.js +35 -0
  15. package/dist/public/rolldown-runtime.js +38 -0
  16. package/dist/public/vconsole.min.js +10355 -0
  17. package/dist/public/vue.js +6542 -0
  18. package/dist/scripts/nw-build.js +136 -0
  19. package/dist/scripts/nw-dev.js +67 -0
  20. package/dist/scripts/preinstall.js +112 -0
  21. package/dist/server/index.d.ts +2 -0
  22. package/dist/server/index.d.ts.map +1 -0
  23. package/dist/server/index.js +607 -0
  24. package/dist/server/index.js.map +1 -0
  25. package/dist/server/index.ts +685 -0
  26. package/dist/server/model/connection.entity.d.ts +55 -0
  27. package/dist/server/model/connection.entity.d.ts.map +1 -0
  28. package/dist/server/model/connection.entity.js +59 -0
  29. package/dist/server/model/connection.entity.js.map +1 -0
  30. package/dist/server/model/connection.entity.ts +66 -0
  31. package/dist/server/model/database.entity.d.ts +203 -0
  32. package/dist/server/model/database.entity.d.ts.map +1 -0
  33. package/dist/server/model/database.entity.js +211 -0
  34. package/dist/server/model/database.entity.js.map +1 -0
  35. package/dist/server/model/database.entity.ts +246 -0
  36. package/dist/server/service/connection.service.d.ts +84 -0
  37. package/dist/server/service/connection.service.d.ts.map +1 -0
  38. package/dist/server/service/connection.service.js +369 -0
  39. package/dist/server/service/connection.service.js.map +1 -0
  40. package/dist/server/service/connection.service.ts +359 -0
  41. package/dist/server/service/database/base.service.d.ts +183 -0
  42. package/dist/server/service/database/base.service.d.ts.map +1 -0
  43. package/dist/server/service/database/base.service.js +253 -0
  44. package/dist/server/service/database/base.service.js.map +1 -0
  45. package/dist/server/service/database/base.service.ts +407 -0
  46. package/dist/server/service/database/cockroachdb.service.d.ts +116 -0
  47. package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -0
  48. package/dist/server/service/database/cockroachdb.service.js +812 -0
  49. package/dist/server/service/database/cockroachdb.service.js.map +1 -0
  50. package/dist/server/service/database/cockroachdb.service.ts +871 -0
  51. package/dist/server/service/database/database.service.d.ts +495 -0
  52. package/dist/server/service/database/database.service.d.ts.map +1 -0
  53. package/dist/server/service/database/database.service.js +711 -0
  54. package/dist/server/service/database/database.service.js.map +1 -0
  55. package/dist/server/service/database/database.service.ts +776 -0
  56. package/dist/server/service/database/index.d.ts +8 -0
  57. package/dist/server/service/database/index.d.ts.map +1 -0
  58. package/dist/server/service/database/index.js +18 -0
  59. package/dist/server/service/database/index.js.map +1 -0
  60. package/dist/server/service/database/index.ts +7 -0
  61. package/dist/server/service/database/mongodb.service.d.ts +121 -0
  62. package/dist/server/service/database/mongodb.service.d.ts.map +1 -0
  63. package/dist/server/service/database/mongodb.service.js +502 -0
  64. package/dist/server/service/database/mongodb.service.js.map +1 -0
  65. package/dist/server/service/database/mongodb.service.ts +501 -0
  66. package/dist/server/service/database/mssql.service.d.ts +118 -0
  67. package/dist/server/service/database/mssql.service.d.ts.map +1 -0
  68. package/dist/server/service/database/mssql.service.js +871 -0
  69. package/dist/server/service/database/mssql.service.js.map +1 -0
  70. package/dist/server/service/database/mssql.service.ts +932 -0
  71. package/dist/server/service/database/mysql.service.d.ts +114 -0
  72. package/dist/server/service/database/mysql.service.d.ts.map +1 -0
  73. package/dist/server/service/database/mysql.service.js +960 -0
  74. package/dist/server/service/database/mysql.service.js.map +1 -0
  75. package/dist/server/service/database/mysql.service.ts +1026 -0
  76. package/dist/server/service/database/oracle.service.d.ts +126 -0
  77. package/dist/server/service/database/oracle.service.d.ts.map +1 -0
  78. package/dist/server/service/database/oracle.service.js +963 -0
  79. package/dist/server/service/database/oracle.service.js.map +1 -0
  80. package/dist/server/service/database/oracle.service.ts +1036 -0
  81. package/dist/server/service/database/postgres.service.d.ts +122 -0
  82. package/dist/server/service/database/postgres.service.d.ts.map +1 -0
  83. package/dist/server/service/database/postgres.service.js +882 -0
  84. package/dist/server/service/database/postgres.service.js.map +1 -0
  85. package/dist/server/service/database/postgres.service.ts +961 -0
  86. package/dist/server/service/database/sap.service.d.ts +115 -0
  87. package/dist/server/service/database/sap.service.d.ts.map +1 -0
  88. package/dist/server/service/database/sap.service.js +868 -0
  89. package/dist/server/service/database/sap.service.js.map +1 -0
  90. package/dist/server/service/database/sap.service.ts +922 -0
  91. package/dist/server/service/database/sqlite.service.d.ts +112 -0
  92. package/dist/server/service/database/sqlite.service.d.ts.map +1 -0
  93. package/dist/server/service/database/sqlite.service.js +723 -0
  94. package/dist/server/service/database/sqlite.service.js.map +1 -0
  95. package/dist/server/service/database/sqlite.service.ts +787 -0
  96. package/dist/server/service/session.service.ts +158 -0
  97. package/dist/view/index.html +45 -0
  98. package/package.json +9 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.service.js","sourceRoot":"","sources":["../../../../server/service/database/mongodb.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,501 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { BaseDatabaseService } from './base.service';
3
+ import {
4
+ DatabaseEntity,
5
+ TableEntity,
6
+ ColumnEntity,
7
+ IndexEntity,
8
+ ForeignKeyEntity
9
+ } from '../../model/database.entity';
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+
13
+ /**
14
+ * MongoDB数据库服务实现
15
+ * MongoDB 是一个 NoSQL 文档数据库,与关系型数据库有很大不同
16
+ */
17
+ export class MongoDBService extends BaseDatabaseService {
18
+
19
+ getDatabaseType() {
20
+ return 'mongodb';
21
+ }
22
+
23
+ /**
24
+ * 获取MongoDB数据库列表
25
+ */
26
+ async getDatabases(dataSource: DataSource): Promise<string[]> {
27
+ try {
28
+ const result = await dataSource.query(`db.adminCommand({ listDatabases: 1 })`);
29
+ return result.databases.map((db: any) => db.name).filter((name: string) => name !== 'admin' && name !== 'local' && name !== 'config');
30
+ } catch (error) {
31
+ console.error('获取MongoDB数据库列表失败:', error);
32
+ return [];
33
+ }
34
+ }
35
+
36
+ /**
37
+ * 获取MongoDB集合列表(相当于关系型数据库的表)
38
+ */
39
+ async getTables(dataSource: DataSource, database: string): Promise<TableEntity[]> {
40
+ try {
41
+ const result = await dataSource.query(`db.getCollectionNames()`);
42
+ return result.map((collectionName: string) => ({
43
+ name: collectionName,
44
+ type: 'collection',
45
+ rowCount: undefined,
46
+ dataSize: undefined,
47
+ indexSize: undefined
48
+ }));
49
+ } catch (error) {
50
+ console.error('获取MongoDB集合列表失败:', error);
51
+ return [];
52
+ }
53
+ }
54
+
55
+ /**
56
+ * 获取MongoDB集合的字段信息(文档结构)
57
+ */
58
+ async getColumns(dataSource: DataSource, database: string, table: string): Promise<ColumnEntity[]> {
59
+ try {
60
+ const result = await dataSource.query(`db.${table}.findOne()`);
61
+ if (!result) {
62
+ return [];
63
+ }
64
+
65
+ const fields = Object.keys(result);
66
+ return fields.map(field => ({
67
+ name: field,
68
+ type: this.inferType(result[field]),
69
+ nullable: true,
70
+ defaultValue: undefined,
71
+ isPrimary: field === '_id',
72
+ isAutoIncrement: field === '_id'
73
+ }));
74
+ } catch (error) {
75
+ console.error('获取MongoDB集合字段信息失败:', error);
76
+ return [];
77
+ }
78
+ }
79
+
80
+ /**
81
+ * 推断字段类型
82
+ */
83
+ private inferType(value: any): string {
84
+ if (value === null || value === undefined) {
85
+ return 'null';
86
+ }
87
+ const type = typeof value;
88
+ if (type === 'string') {
89
+ return 'string';
90
+ } else if (type === 'number') {
91
+ return Number.isInteger(value) ? 'int' : 'double';
92
+ } else if (type === 'boolean') {
93
+ return 'boolean';
94
+ } else if (type === 'object') {
95
+ if (Array.isArray(value)) {
96
+ return 'array';
97
+ } else if (value instanceof Date) {
98
+ return 'date';
99
+ } else if (value instanceof Buffer) {
100
+ return 'binData';
101
+ } else if (value instanceof ObjectId) {
102
+ return 'objectId';
103
+ } else {
104
+ return 'object';
105
+ }
106
+ }
107
+ return 'unknown';
108
+ }
109
+
110
+ /**
111
+ * 获取MongoDB索引信息
112
+ */
113
+ async getIndexes(dataSource: DataSource, database: string, table: string): Promise<IndexEntity[]> {
114
+ try {
115
+ const result = await dataSource.query(`db.${table}.getIndexes()`);
116
+ return result.map((index: any) => ({
117
+ name: index.name,
118
+ type: index.unique ? 'UNIQUE' : 'INDEX',
119
+ columns: Object.keys(index.key),
120
+ unique: index.unique || false
121
+ }));
122
+ } catch (error) {
123
+ console.error('获取MongoDB索引信息失败:', error);
124
+ return [];
125
+ }
126
+ }
127
+
128
+ /**
129
+ * MongoDB不支持外键
130
+ */
131
+ async getForeignKeys(dataSource: DataSource, database: string, table: string): Promise<ForeignKeyEntity[]> {
132
+ return [];
133
+ }
134
+
135
+ /**
136
+ * 获取MongoDB数据库大小
137
+ */
138
+ async getDatabaseSize(dataSource: DataSource, database: string): Promise<number> {
139
+ try {
140
+ const result = await dataSource.query(`db.stats({ scale: 1 })`);
141
+ return result.dataSize || 0;
142
+ } catch (error) {
143
+ console.error('获取MongoDB数据库大小失败:', error);
144
+ return 0;
145
+ }
146
+ }
147
+
148
+ /**
149
+ * MongoDB不支持视图
150
+ */
151
+ async getViews(dataSource: DataSource, database: string): Promise<any[]> {
152
+ return [];
153
+ }
154
+
155
+ /**
156
+ * MongoDB不支持视图
157
+ */
158
+ async getViewDefinition(dataSource: DataSource, database: string, viewName: string): Promise<string> {
159
+ throw new Error('MongoDB不支持视图');
160
+ }
161
+
162
+ /**
163
+ * MongoDB不支持存储过程
164
+ */
165
+ async getProcedures(dataSource: DataSource, database: string): Promise<any[]> {
166
+ return [];
167
+ }
168
+
169
+ /**
170
+ * MongoDB不支持存储过程
171
+ */
172
+ async getProcedureDefinition(dataSource: DataSource, database: string, procedureName: string): Promise<string> {
173
+ throw new Error('MongoDB不支持存储过程');
174
+ }
175
+
176
+ /**
177
+ * 创建MongoDB数据库
178
+ */
179
+ async createDatabase(dataSource: DataSource, databaseName: string, options?: any): Promise<void> {
180
+ try {
181
+ await dataSource.query(`db.getSiblingDB('${databaseName}').createCollection('temp')`);
182
+ await dataSource.query(`db.getSiblingDB('${databaseName}').temp.drop()`);
183
+ } catch (error) {
184
+ console.error('创建MongoDB数据库失败:', error);
185
+ throw new Error(`创建数据库失败: ${error.message}`);
186
+ }
187
+ }
188
+
189
+ /**
190
+ * 删除MongoDB数据库
191
+ */
192
+ async dropDatabase(dataSource: DataSource, databaseName: string): Promise<void> {
193
+ try {
194
+ await dataSource.query(`db.getSiblingDB('${databaseName}').dropDatabase()`);
195
+ } catch (error) {
196
+ console.error('删除MongoDB数据库失败:', error);
197
+ throw new Error(`删除数据库失败: ${error.message}`);
198
+ }
199
+ }
200
+
201
+ /**
202
+ * 导出数据库架构
203
+ */
204
+ async exportSchema(dataSource: DataSource, databaseName: string): Promise<string> {
205
+ const collections = await this.getTables(dataSource, databaseName);
206
+ let schemaSql = `-- MongoDB数据库架构导出 - ${databaseName}\n`;
207
+ schemaSql += `-- 导出时间: ${new Date().toISOString()}\n\n`;
208
+
209
+ for (const collection of collections) {
210
+ const columns = await this.getColumns(dataSource, databaseName, collection.name);
211
+ const indexes = await this.getIndexes(dataSource, databaseName, collection.name);
212
+
213
+ schemaSql += `// 集合: ${collection.name}\n`;
214
+ schemaSql += `// 字段:\n`;
215
+ columns.forEach(column => {
216
+ schemaSql += `// ${column.name}: ${column.type}${column.isPrimary ? ' (主键)' : ''}\n`;
217
+ });
218
+ schemaSql += `\n`;
219
+
220
+ if (indexes.length > 0) {
221
+ schemaSql += `// 索引:\n`;
222
+ indexes.forEach(index => {
223
+ schemaSql += `// ${index.name}: ${index.type} (${index.columns.join(', ')})\n`;
224
+ });
225
+ schemaSql += `\n`;
226
+ }
227
+ }
228
+
229
+ return schemaSql;
230
+ }
231
+
232
+ /**
233
+ * 查看MongoDB日志
234
+ */
235
+ async viewLogs(dataSource: DataSource, database?: string, limit: number = 100): Promise<any[]> {
236
+ try {
237
+ const result = await dataSource.query(`db.getSiblingDB('admin').adminCommand({ getLog: 'global' })`);
238
+ return result.log || [];
239
+ } catch (error) {
240
+ console.error('获取MongoDB日志失败:', error);
241
+ return [{ message: 'MongoDB日志功能需要管理员权限,请检查数据库配置' }];
242
+ }
243
+ }
244
+
245
+ /**
246
+ * 备份MongoDB数据库
247
+ */
248
+ async backupDatabase(dataSource: DataSource, databaseName: string, options?: any): Promise<string> {
249
+ try {
250
+ const backupPath = options?.path || path.join(__dirname, '..', '..', '..', 'data', 'backups');
251
+ if (!fs.existsSync(backupPath)) {
252
+ fs.mkdirSync(backupPath, { recursive: true });
253
+ }
254
+
255
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
256
+ const backupFile = path.join(backupPath, `${databaseName}_${timestamp}.json`);
257
+
258
+ const collections = await this.getTables(dataSource, databaseName);
259
+ const backupData: any = {
260
+ database: databaseName,
261
+ exportedAt: new Date().toISOString(),
262
+ collections: {}
263
+ };
264
+
265
+ for (const collection of collections) {
266
+ const result = await dataSource.query(`db.${collection.name}.find().toArray()`);
267
+ backupData.collections[collection.name] = result;
268
+ }
269
+
270
+ fs.writeFileSync(backupFile, JSON.stringify(backupData, null, 2), 'utf8');
271
+ return `备份成功:${backupFile}`;
272
+ } catch (error) {
273
+ console.error('MongoDB备份失败:', error);
274
+ throw new Error(`备份失败: ${error.message}`);
275
+ }
276
+ }
277
+
278
+ /**
279
+ * 恢复MongoDB数据库
280
+ */
281
+ async restoreDatabase(dataSource: DataSource, databaseName: string, filePath: string, options?: any): Promise<void> {
282
+ try {
283
+ const backupData = JSON.parse(fs.readFileSync(filePath, 'utf8'));
284
+
285
+ for (const collectionName in backupData.collections) {
286
+ const documents = backupData.collections[collectionName];
287
+ if (documents.length > 0) {
288
+ await dataSource.query(`db.${collectionName}.insertMany(${JSON.stringify(documents)})`);
289
+ }
290
+ }
291
+ } catch (error) {
292
+ console.error('MongoDB恢复失败:', error);
293
+ throw new Error(`恢复失败: ${error.message}`);
294
+ }
295
+ }
296
+
297
+ /**
298
+ * 导出表数据到 SQL 文件(MongoDB不支持SQL)
299
+ */
300
+ async exportTableDataToSQL(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string> {
301
+ throw new Error('MongoDB不支持导出为SQL格式,请使用JSON格式');
302
+ }
303
+
304
+ /**
305
+ * 导出表数据到 CSV 文件
306
+ */
307
+ async exportTableDataToCSV(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string> {
308
+ try {
309
+ const exportPath = options?.path || path.join(__dirname, '..', '..', '..', 'data', 'exports');
310
+ if (!fs.existsSync(exportPath)) {
311
+ fs.mkdirSync(exportPath, { recursive: true });
312
+ }
313
+
314
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
315
+ const exportFile = path.join(exportPath, `${tableName}_data_${timestamp}.csv`);
316
+
317
+ const result = await dataSource.query(`db.${tableName}.find().toArray()`);
318
+
319
+ if (result.length === 0) {
320
+ fs.writeFileSync(exportFile, '', 'utf8');
321
+ return exportFile;
322
+ }
323
+
324
+ const columns = await this.getColumns(dataSource, databaseName, tableName);
325
+ const columnNames = columns.map(column => column.name);
326
+
327
+ const bom = Buffer.from([0xEF, 0xBB, 0xBF]);
328
+ fs.writeFileSync(exportFile, bom);
329
+ fs.appendFileSync(exportFile, columnNames.map(name => `"${name}"`).join(',') + '\n', 'utf8');
330
+
331
+ let csv = '';
332
+ result.forEach((doc) => {
333
+ const values = columnNames.map(column => {
334
+ const value = doc[column];
335
+ if (value === null || value === undefined) {
336
+ return '';
337
+ } else if (typeof value === 'string') {
338
+ return `"${value.replace(/"/g, '""')}"`;
339
+ } else if (value instanceof Date) {
340
+ return `"${value.toISOString()}"`;
341
+ } else if (typeof value === 'object' && value !== null) {
342
+ try {
343
+ return `"${JSON.stringify(value).replace(/"/g, '""')}"`;
344
+ } catch {
345
+ return `"${String(value).replace(/"/g, '""')}"`;
346
+ }
347
+ } else {
348
+ return String(value);
349
+ }
350
+ });
351
+ csv += values.join(',') + '\n';
352
+ });
353
+
354
+ fs.appendFileSync(exportFile, csv, 'utf8');
355
+ return exportFile;
356
+ } catch (error) {
357
+ console.error('MongoDB导出表数据到CSV失败:', error);
358
+ throw new Error(`导出表数据到CSV失败: ${error.message}`);
359
+ }
360
+ }
361
+
362
+ /**
363
+ * 导出表数据到 JSON 文件
364
+ */
365
+ async exportTableDataToJSON(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string> {
366
+ try {
367
+ const exportPath = options?.path || path.join(__dirname, '..', '..', '..', 'data', 'exports');
368
+ if (!fs.existsSync(exportPath)) {
369
+ fs.mkdirSync(exportPath, { recursive: true });
370
+ }
371
+
372
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
373
+ const exportFile = path.join(exportPath, `${tableName}_data_${timestamp}.json`);
374
+
375
+ const result = await dataSource.query(`db.${tableName}.find().toArray()`);
376
+ fs.writeFileSync(exportFile, JSON.stringify(result, null, 2), 'utf8');
377
+ return exportFile;
378
+ } catch (error) {
379
+ console.error('MongoDB导出表数据到JSON失败:', error);
380
+ throw new Error(`导出表数据到JSON失败: ${error.message}`);
381
+ }
382
+ }
383
+
384
+ /**
385
+ * 导出表数据到 Excel 文件
386
+ */
387
+ async exportTableDataToExcel(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string> {
388
+ try {
389
+ const exportPath = options?.path || path.join(__dirname, '..', '..', '..', 'data', 'exports');
390
+ if (!fs.existsSync(exportPath)) {
391
+ fs.mkdirSync(exportPath, { recursive: true });
392
+ }
393
+
394
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
395
+ const exportFile = path.join(exportPath, `${tableName}_data_${timestamp}.xlsx`);
396
+
397
+ const result = await dataSource.query(`db.${tableName}.find().toArray()`);
398
+ const columns = await this.getColumns(dataSource, databaseName, tableName);
399
+ const columnNames = columns.map(column => column.name);
400
+
401
+ const ExcelJS = require('exceljs');
402
+ const workbook = new ExcelJS.Workbook();
403
+ const worksheet = workbook.addWorksheet(tableName);
404
+
405
+ worksheet.columns = columnNames.map(name => ({
406
+ header: name,
407
+ key: name
408
+ }));
409
+
410
+ const flatData = result.map(doc => {
411
+ const flatDoc: any = {};
412
+ columnNames.forEach(column => {
413
+ const value = doc[column];
414
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
415
+ flatDoc[column] = JSON.stringify(value);
416
+ } else {
417
+ flatDoc[column] = value;
418
+ }
419
+ });
420
+ return flatDoc;
421
+ });
422
+
423
+ worksheet.addRows(flatData);
424
+
425
+ await workbook.xlsx.writeFile(exportFile);
426
+ return exportFile;
427
+ } catch (error) {
428
+ console.error('MongoDB导出表数据到Excel失败:', error);
429
+ throw new Error(`导出表数据到Excel失败: ${error.message}`);
430
+ }
431
+ }
432
+
433
+ /**
434
+ * MongoDB使用反引号作为标识符
435
+ */
436
+ public quoteIdentifier(identifier: string): string {
437
+ return `\`${identifier}\``;
438
+ }
439
+
440
+ /**
441
+ * 修改表结构
442
+ * MongoDB是文档数据库,没有传统的表结构概念
443
+ * 集合中的文档可以有不同的结构,因此不需要ALTER TABLE
444
+ */
445
+ async alterTable(dataSource: DataSource, databaseName: string, tableDiff: any): Promise<any> {
446
+ return { ret: 0, message: 'MongoDB是文档数据库,不需要修改表结构' };
447
+ }
448
+
449
+ /**
450
+ * 批量插入数据
451
+ */
452
+ async bulkInsert(dataSource: DataSource, databaseName: string, tableName: string, data: any[]): Promise<void> {
453
+ if (data.length === 0) return;
454
+ // MongoDB使用Repository模式
455
+ const repository = dataSource.getMongoRepository(tableName);
456
+ await repository.insertMany(data);
457
+ }
458
+
459
+ /**
460
+ * 插入单条数据
461
+ */
462
+ async insertData(dataSource: DataSource, databaseName: string, tableName: string, data: any): Promise<void> {
463
+ // MongoDB使用Repository模式
464
+ const repository = dataSource.getMongoRepository(tableName);
465
+ await repository.insertOne(data);
466
+ }
467
+
468
+ /**
469
+ * 删除表(集合)
470
+ */
471
+ async dropTable(dataSource: DataSource, databaseName: string, tableName: string): Promise<void> {
472
+ // MongoDB使用Repository模式
473
+ const repository = dataSource.getMongoRepository(tableName);
474
+ await repository.deleteMany({});
475
+ }
476
+
477
+ /**
478
+ * 创建表(集合)
479
+ */
480
+ async createTable(dataSource: DataSource, databaseName: string, table: any): Promise<void> {
481
+ const { name } = table;
482
+ // MongoDB会自动创建集合,无需显式创建
483
+ await this.insertData(dataSource, databaseName, name, {});
484
+ await this.dropTable(dataSource, databaseName, name);
485
+ }
486
+ }
487
+
488
+ /**
489
+ * ObjectId 类型定义
490
+ */
491
+ class ObjectId {
492
+ constructor(id?: string) {
493
+ if (id) {
494
+ this.id = id;
495
+ }
496
+ }
497
+ id?: string;
498
+ toString() {
499
+ return this.id || '';
500
+ }
501
+ }
@@ -0,0 +1,118 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { BaseDatabaseService } from './base.service';
3
+ import { TableEntity, ColumnEntity, IndexEntity, ForeignKeyEntity } from '../../model/database.entity';
4
+ /**
5
+ * SQL Server数据库服务实现
6
+ */
7
+ export declare class SQLServerService extends BaseDatabaseService {
8
+ getDatabaseType(): string;
9
+ /**
10
+ * 获取SQL Server数据库列表
11
+ */
12
+ getDatabases(dataSource: DataSource): Promise<string[]>;
13
+ /**
14
+ * 获取SQL Server表列表
15
+ */
16
+ getTables(dataSource: DataSource, database: string): Promise<TableEntity[]>;
17
+ /**
18
+ * 获取SQL Server列信息
19
+ */
20
+ getColumns(dataSource: DataSource, database: string, table: string): Promise<ColumnEntity[]>;
21
+ /**
22
+ * 获取SQL Server索引信息
23
+ */
24
+ getIndexes(dataSource: DataSource, database: string, table: string): Promise<IndexEntity[]>;
25
+ /**
26
+ * 获取SQL Server外键信息
27
+ */
28
+ getForeignKeys(dataSource: DataSource, database: string, table: string): Promise<ForeignKeyEntity[]>;
29
+ /**
30
+ * 获取SQL Server数据库大小
31
+ */
32
+ getDatabaseSize(dataSource: DataSource, database: string): Promise<number>;
33
+ /**
34
+ * 获取主键信息
35
+ */
36
+ private getPrimaryKeys;
37
+ /**
38
+ * SQL Server的标识符引用方式
39
+ */
40
+ quoteIdentifier(identifier: string): string;
41
+ /**
42
+ * 获取SQL Server视图列表
43
+ */
44
+ getViews(dataSource: DataSource, database: string): Promise<any[]>;
45
+ /**
46
+ * 获取SQL Server视图定义
47
+ */
48
+ getViewDefinition(dataSource: DataSource, database: string, viewName: string): Promise<string>;
49
+ /**
50
+ * 获取SQL Server存储过程列表
51
+ */
52
+ getProcedures(dataSource: DataSource, database: string): Promise<any[]>;
53
+ /**
54
+ * 获取SQL Server存储过程定义
55
+ */
56
+ getProcedureDefinition(dataSource: DataSource, database: string, procedureName: string): Promise<string>;
57
+ /**
58
+ * 创建SQL Server数据库
59
+ */
60
+ createDatabase(dataSource: DataSource, databaseName: string, options?: any): Promise<void>;
61
+ /**
62
+ * 删除SQL Server数据库
63
+ */
64
+ dropDatabase(dataSource: DataSource, databaseName: string): Promise<void>;
65
+ /**
66
+ * 导出数据库架构
67
+ */
68
+ exportSchema(dataSource: DataSource, databaseName: string): Promise<string>;
69
+ /**
70
+ * 查看数据库日志
71
+ */
72
+ viewLogs(dataSource: DataSource, database?: string, limit?: number): Promise<any[]>;
73
+ /**
74
+ * 备份数据库
75
+ */
76
+ backupDatabase(dataSource: DataSource, databaseName: string, options?: any): Promise<string>;
77
+ /**
78
+ * 恢复数据库
79
+ */
80
+ restoreDatabase(dataSource: DataSource, databaseName: string, filePath: string, options?: any): Promise<void>;
81
+ /**
82
+ * 导出表数据到 SQL 文件
83
+ */
84
+ exportTableDataToSQL(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string>;
85
+ /**
86
+ * 导出表数据到 CSV 文件
87
+ */
88
+ exportTableDataToCSV(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string>;
89
+ /**
90
+ * 导出表数据到 JSON 文件
91
+ */
92
+ exportTableDataToJSON(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string>;
93
+ /**
94
+ * 导出表数据到 Excel 文件
95
+ */
96
+ exportTableDataToExcel(dataSource: DataSource, databaseName: string, tableName: string, options?: any): Promise<string>;
97
+ /**
98
+ * 修改表结构
99
+ */
100
+ alterTable(dataSource: DataSource, databaseName: string, tableDiff: any): Promise<any>;
101
+ /**
102
+ * 批量插入数据
103
+ */
104
+ bulkInsert(dataSource: DataSource, databaseName: string, tableName: string, data: any[]): Promise<void>;
105
+ /**
106
+ * 插入单条数据
107
+ */
108
+ insertData(dataSource: DataSource, databaseName: string, tableName: string, data: any): Promise<void>;
109
+ /**
110
+ * 删除表
111
+ */
112
+ dropTable(dataSource: DataSource, databaseName: string, tableName: string): Promise<void>;
113
+ /**
114
+ * 创建表
115
+ */
116
+ createTable(dataSource: DataSource, databaseName: string, table: any): Promise<void>;
117
+ }
118
+ //# sourceMappingURL=mssql.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mssql.service.d.ts","sourceRoot":"","sources":["../../../../server/service/database/mssql.service.ts"],"names":[],"mappings":"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"}