fdb2 1.0.5 → 1.0.7

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 (195) hide show
  1. package/.vscodeignore +45 -0
  2. package/README.md +24 -85
  3. package/bin/fdb2.js +3 -3
  4. package/dist/package.json +115 -0
  5. package/dist/pnpm-lock.yaml +7447 -0
  6. package/dist/public/explorer.css +244 -111
  7. package/dist/public/explorer.js +518 -275
  8. package/dist/scripts/preinstall.js +112 -0
  9. package/dist/server/index.d.ts.map +1 -1
  10. package/dist/server/index.js +4 -9
  11. package/dist/server/index.js.map +1 -1
  12. package/dist/server/index.ts +5 -10
  13. package/dist/server/service/connection.service.d.ts.map +1 -1
  14. package/dist/server/service/connection.service.js +2 -1
  15. package/dist/server/service/connection.service.js.map +1 -1
  16. package/dist/server/service/connection.service.ts +2 -1
  17. package/dist/server/service/database/base.service.d.ts +4 -0
  18. package/dist/server/service/database/base.service.d.ts.map +1 -1
  19. package/dist/server/service/database/base.service.js +3 -3
  20. package/dist/server/service/database/base.service.js.map +1 -1
  21. package/dist/server/service/database/base.service.ts +8 -3
  22. package/dist/server/service/database/cockroachdb.service.d.ts +5 -0
  23. package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -1
  24. package/dist/server/service/database/cockroachdb.service.js +112 -0
  25. package/dist/server/service/database/cockroachdb.service.js.map +1 -1
  26. package/dist/server/service/database/cockroachdb.service.ts +123 -0
  27. package/dist/server/service/database/database.service.d.ts +4 -0
  28. package/dist/server/service/database/database.service.d.ts.map +1 -1
  29. package/dist/server/service/database/database.service.js +8 -0
  30. package/dist/server/service/database/database.service.js.map +1 -1
  31. package/dist/server/service/database/database.service.ts +9 -0
  32. package/dist/server/service/database/mongodb.service.d.ts +6 -0
  33. package/dist/server/service/database/mongodb.service.d.ts.map +1 -1
  34. package/dist/server/service/database/mongodb.service.js +8 -0
  35. package/dist/server/service/database/mongodb.service.js.map +1 -1
  36. package/dist/server/service/database/mongodb.service.ts +9 -0
  37. package/dist/server/service/database/mssql.service.d.ts +4 -0
  38. package/dist/server/service/database/mssql.service.d.ts.map +1 -1
  39. package/dist/server/service/database/mssql.service.js +105 -0
  40. package/dist/server/service/database/mssql.service.js.map +1 -1
  41. package/dist/server/service/database/mssql.service.ts +118 -0
  42. package/dist/server/service/database/mysql.service.d.ts +4 -0
  43. package/dist/server/service/database/mysql.service.d.ts.map +1 -1
  44. package/dist/server/service/database/mysql.service.js +116 -0
  45. package/dist/server/service/database/mysql.service.js.map +1 -1
  46. package/dist/server/service/database/mysql.service.ts +130 -0
  47. package/dist/server/service/database/oracle.service.d.ts +4 -0
  48. package/dist/server/service/database/oracle.service.d.ts.map +1 -1
  49. package/dist/server/service/database/oracle.service.js +114 -0
  50. package/dist/server/service/database/oracle.service.js.map +1 -1
  51. package/dist/server/service/database/oracle.service.ts +128 -0
  52. package/dist/server/service/database/postgres.service.d.ts +4 -0
  53. package/dist/server/service/database/postgres.service.d.ts.map +1 -1
  54. package/dist/server/service/database/postgres.service.js +120 -0
  55. package/dist/server/service/database/postgres.service.js.map +1 -1
  56. package/dist/server/service/database/postgres.service.ts +131 -0
  57. package/dist/server/service/database/sap.service.d.ts +4 -0
  58. package/dist/server/service/database/sap.service.d.ts.map +1 -1
  59. package/dist/server/service/database/sap.service.js +107 -0
  60. package/dist/server/service/database/sap.service.js.map +1 -1
  61. package/dist/server/service/database/sap.service.ts +120 -0
  62. package/dist/server/service/database/sqlite.service.d.ts +5 -0
  63. package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
  64. package/dist/server/service/database/sqlite.service.js +133 -0
  65. package/dist/server/service/database/sqlite.service.js.map +1 -1
  66. package/dist/server/service/database/sqlite.service.ts +150 -0
  67. package/package.json +18 -9
  68. package/packages/vscode/.vscodeignore +44 -0
  69. package/packages/vscode/README.md +62 -0
  70. package/packages/vscode/out/database-services/base.service.js +236 -0
  71. package/packages/vscode/out/database-services/base.service.js.map +1 -0
  72. package/packages/vscode/out/database-services/cockroachdb.service.js +634 -0
  73. package/packages/vscode/out/database-services/cockroachdb.service.js.map +1 -0
  74. package/packages/vscode/out/database-services/connection.service.js +346 -0
  75. package/packages/vscode/out/database-services/connection.service.js.map +1 -0
  76. package/packages/vscode/out/database-services/database.service.js +571 -0
  77. package/packages/vscode/out/database-services/database.service.js.map +1 -0
  78. package/packages/vscode/out/database-services/index.js +18 -0
  79. package/packages/vscode/out/database-services/index.js.map +1 -0
  80. package/packages/vscode/out/database-services/model/connection.entity.js +11 -0
  81. package/packages/vscode/out/database-services/model/connection.entity.js.map +1 -0
  82. package/packages/vscode/out/database-services/model/database.entity.js +35 -0
  83. package/packages/vscode/out/database-services/model/database.entity.js.map +1 -0
  84. package/packages/vscode/out/database-services/mongodb.service.js +458 -0
  85. package/packages/vscode/out/database-services/mongodb.service.js.map +1 -0
  86. package/packages/vscode/out/database-services/mssql.service.js +694 -0
  87. package/packages/vscode/out/database-services/mssql.service.js.map +1 -0
  88. package/packages/vscode/out/database-services/mysql.service.js +735 -0
  89. package/packages/vscode/out/database-services/mysql.service.js.map +1 -0
  90. package/packages/vscode/out/database-services/oracle.service.js +787 -0
  91. package/packages/vscode/out/database-services/oracle.service.js.map +1 -0
  92. package/packages/vscode/out/database-services/postgres.service.js +696 -0
  93. package/packages/vscode/out/database-services/postgres.service.js.map +1 -0
  94. package/packages/vscode/out/database-services/sap.service.js +695 -0
  95. package/packages/vscode/out/database-services/sap.service.js.map +1 -0
  96. package/packages/vscode/out/database-services/sqlite.service.js +532 -0
  97. package/packages/vscode/out/database-services/sqlite.service.js.map +1 -0
  98. package/packages/vscode/out/extension.js +93 -0
  99. package/packages/vscode/out/extension.js.map +1 -0
  100. package/packages/vscode/out/provider/DatabaseTreeProvider.js +159 -0
  101. package/packages/vscode/out/provider/DatabaseTreeProvider.js.map +1 -0
  102. package/packages/vscode/out/provider/WebViewProvider.js +259 -0
  103. package/packages/vscode/out/provider/WebViewProvider.js.map +1 -0
  104. package/packages/vscode/out/service/ConnectionManager.js +105 -0
  105. package/packages/vscode/out/service/ConnectionManager.js.map +1 -0
  106. package/packages/vscode/out/service/DatabaseServiceBridge.js +395 -0
  107. package/packages/vscode/out/service/DatabaseServiceBridge.js.map +1 -0
  108. package/packages/vscode/out/typings/connection.js +3 -0
  109. package/packages/vscode/out/typings/connection.js.map +1 -0
  110. package/packages/vscode/package.json +142 -0
  111. package/packages/vscode/resources/icon.svg +5 -0
  112. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js +6529 -0
  113. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js.map +1 -0
  114. package/packages/vscode/resources/webview/connection.css +69 -0
  115. package/packages/vscode/resources/webview/connection.js +228 -0
  116. package/packages/vscode/resources/webview/connection.js.map +1 -0
  117. package/packages/vscode/resources/webview/database.css +259 -0
  118. package/packages/vscode/resources/webview/database.js +275 -0
  119. package/packages/vscode/resources/webview/database.js.map +1 -0
  120. package/packages/vscode/resources/webview/favicon.ico +0 -0
  121. package/packages/vscode/resources/webview/index.html +9 -0
  122. package/packages/vscode/resources/webview/modules/header.tpl +14 -0
  123. package/packages/vscode/resources/webview/modules/initial_state.tpl +55 -0
  124. package/packages/vscode/resources/webview/query.css +162 -0
  125. package/packages/vscode/resources/webview/query.js +198 -0
  126. package/packages/vscode/resources/webview/query.js.map +1 -0
  127. package/packages/vscode/src/database-services/base.service.js.map +1 -0
  128. package/packages/vscode/src/database-services/base.service.ts +363 -0
  129. package/packages/vscode/src/database-services/cockroachdb.service.js.map +1 -0
  130. package/packages/vscode/src/database-services/cockroachdb.service.ts +659 -0
  131. package/packages/vscode/src/database-services/connection.service.ts +341 -0
  132. package/packages/vscode/src/database-services/database.service.ts +630 -0
  133. package/packages/vscode/src/database-services/index.ts +7 -0
  134. package/packages/vscode/src/database-services/model/connection.entity.js +11 -0
  135. package/packages/vscode/src/database-services/model/connection.entity.js.map +1 -0
  136. package/packages/vscode/src/database-services/model/connection.entity.ts +66 -0
  137. package/packages/vscode/src/database-services/model/database.entity.js +35 -0
  138. package/packages/vscode/src/database-services/model/database.entity.js.map +1 -0
  139. package/packages/vscode/src/database-services/model/database.entity.ts +246 -0
  140. package/packages/vscode/src/database-services/mongodb.service.js.map +1 -0
  141. package/packages/vscode/src/database-services/mongodb.service.ts +454 -0
  142. package/packages/vscode/src/database-services/mssql.service.js.map +1 -0
  143. package/packages/vscode/src/database-services/mssql.service.ts +723 -0
  144. package/packages/vscode/src/database-services/mysql.service.js.map +1 -0
  145. package/packages/vscode/src/database-services/mysql.service.ts +761 -0
  146. package/packages/vscode/src/database-services/oracle.service.js.map +1 -0
  147. package/packages/vscode/src/database-services/oracle.service.ts +832 -0
  148. package/packages/vscode/src/database-services/postgres.service.js.map +1 -0
  149. package/packages/vscode/src/database-services/postgres.service.ts +741 -0
  150. package/packages/vscode/src/database-services/sap.service.js.map +1 -0
  151. package/packages/vscode/src/database-services/sap.service.ts +713 -0
  152. package/packages/vscode/src/database-services/sqlite.service.js.map +1 -0
  153. package/packages/vscode/src/database-services/sqlite.service.ts +559 -0
  154. package/packages/vscode/src/extension.ts +76 -0
  155. package/packages/vscode/src/provider/DatabaseTreeProvider.ts +167 -0
  156. package/packages/vscode/src/provider/WebViewProvider.ts +277 -0
  157. package/packages/vscode/src/service/DatabaseServiceBridge.ts +414 -0
  158. package/packages/vscode/src/typings/connection.ts +90 -0
  159. package/packages/vscode/tsconfig.json +21 -0
  160. package/public/fdb2.png +0 -0
  161. package/scripts/preinstall.js +90 -16
  162. package/server/backups/db_ai_breakout_2026-03-11T08-38-48-677Z.sql +0 -0
  163. package/server/index.ts +5 -10
  164. package/server/model/connection.entity.js +11 -0
  165. package/server/model/connection.entity.js.map +1 -0
  166. package/server/model/database.entity.js +35 -0
  167. package/server/model/database.entity.js.map +1 -0
  168. package/server/service/connection.service.ts +1 -0
  169. package/server/service/database/base.service.ts +8 -3
  170. package/server/service/database/cockroachdb.service.ts +123 -0
  171. package/server/service/database/database.service.ts +9 -0
  172. package/server/service/database/mongodb.service.ts +9 -0
  173. package/server/service/database/mssql.service.ts +118 -0
  174. package/server/service/database/mysql.service.ts +130 -0
  175. package/server/service/database/oracle.service.ts +128 -0
  176. package/server/service/database/postgres.service.ts +131 -0
  177. package/server/service/database/sap.service.ts +120 -0
  178. package/server/service/database/sqlite.service.ts +150 -0
  179. package/server/tsconfig.json +20 -0
  180. package/server.js +1 -1
  181. package/src/components/connection-editor/index.vue +0 -1
  182. package/src/platform/database/components/db-tools.vue +414 -174
  183. package/src/platform/database/components/table-detail.vue +1 -0
  184. package/src/platform/database/components/table-editor.vue +245 -18
  185. package/src/platform/vscode/bridge.ts +121 -0
  186. package/src/platform/vscode/components/ConnectionPanel.vue +272 -0
  187. package/src/platform/vscode/components/DatabasePanel.vue +532 -0
  188. package/src/platform/vscode/components/QueryPanel.vue +371 -0
  189. package/src/platform/vscode/entry/connection.ts +13 -0
  190. package/src/platform/vscode/entry/database.ts +13 -0
  191. package/src/platform/vscode/entry/query.ts +13 -0
  192. package/src/platform/vscode/index.ts +5 -0
  193. package/src/service/database.ts +2 -6
  194. package/vite.config.ts +46 -6
  195. package/vite.config.vscode.ts +47 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.activate = activate;
37
+ exports.deactivate = deactivate;
38
+ const vscode = __importStar(require("vscode"));
39
+ const DatabaseTreeProvider_1 = require("./provider/DatabaseTreeProvider");
40
+ const WebViewProvider_1 = require("./provider/WebViewProvider");
41
+ const DatabaseServiceBridge_1 = require("./service/DatabaseServiceBridge");
42
+ async function activate(context) {
43
+ console.log('fdb2 extension is now active!');
44
+ // 初始化数据库服务桥接
45
+ const dbBridge = (0, DatabaseServiceBridge_1.getDatabaseServiceBridge)();
46
+ await dbBridge.init();
47
+ // 注册侧边栏树形视图
48
+ const databaseProvider = new DatabaseTreeProvider_1.DatabaseTreeProvider(context, dbBridge);
49
+ vscode.window.registerTreeDataProvider('databaseExplorer', databaseProvider);
50
+ // 注册 WebView 提供者
51
+ const webViewProvider = new WebViewProvider_1.WebViewProvider(context, dbBridge);
52
+ // 注册命令
53
+ const commands = [
54
+ // 查询面板
55
+ vscode.commands.registerCommand('fdb2.openQueryPanel', async () => {
56
+ await webViewProvider.showQueryPanel();
57
+ }),
58
+ // 数据库管理面板
59
+ vscode.commands.registerCommand('fdb2.openDatabasePanel', async (connection) => {
60
+ await webViewProvider.showDatabasePanel(connection);
61
+ }),
62
+ // 刷新连接
63
+ vscode.commands.registerCommand('fdb2.refreshConnections', () => {
64
+ databaseProvider.refresh();
65
+ }),
66
+ // 添加连接
67
+ vscode.commands.registerCommand('fdb2.addConnection', async () => {
68
+ await webViewProvider.showAddConnectionPanel();
69
+ databaseProvider.refresh();
70
+ }),
71
+ // 删除连接
72
+ vscode.commands.registerCommand('fdb2.deleteConnection', async (connection) => {
73
+ const confirmed = await vscode.window.showWarningMessage(`确定要删除连接 "${connection.label}" 吗?`, { modal: true }, '删除');
74
+ if (confirmed === '删除') {
75
+ await dbBridge.connection.deleteConnection(connection.id);
76
+ vscode.window.showInformationMessage(`连接 "${connection.label}" 已删除`);
77
+ databaseProvider.refresh();
78
+ }
79
+ }),
80
+ // 编辑连接
81
+ vscode.commands.registerCommand('fdb2.editConnection', async (connection) => {
82
+ await webViewProvider.showEditConnectionPanel(connection);
83
+ databaseProvider.refresh();
84
+ })
85
+ ];
86
+ commands.forEach(cmd => context.subscriptions.push(cmd));
87
+ // 刷新树形视图
88
+ databaseProvider.refresh();
89
+ }
90
+ function deactivate() {
91
+ console.log('fdb2 extension is now deactivated');
92
+ }
93
+ //# sourceMappingURL=extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,4BAkEC;AAED,gCAEC;AA3ED,+CAAiC;AACjC,0EAAuE;AACvE,gEAA6D;AAC7D,2EAA2E;AAEpE,KAAK,UAAU,QAAQ,CAAC,OAAgC;IAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,aAAa;IACb,MAAM,QAAQ,GAAG,IAAA,gDAAwB,GAAE,CAAC;IAC5C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,YAAY;IACZ,MAAM,gBAAgB,GAAG,IAAI,2CAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAClC,kBAAkB,EAClB,gBAAgB,CACnB,CAAC;IAEF,iBAAiB;IACjB,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE/D,OAAO;IACP,MAAM,QAAQ,GAAG;QACb,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,eAAe,CAAC,cAAc,EAAE,CAAC;QAC3C,CAAC,CAAC;QAEF,UAAU;QACV,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,wBAAwB,EAAE,KAAK,EAAE,UAAgB,EAAE,EAAE;YACjF,MAAM,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAyB,EAAE,GAAG,EAAE;YAC5D,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,eAAe,CAAC,sBAAsB,EAAE,CAAC;YAC/C,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,uBAAuB,EAAE,KAAK,EAAE,UAAe,EAAE,EAAE;YAC/E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CACpD,YAAY,UAAU,CAAC,KAAK,MAAM,EAClC,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,IAAI,CACP,CAAC;YAEF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC1D,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC;gBACrE,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;QACP,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,KAAK,EAAE,UAAe,EAAE,EAAE;YAC7E,MAAM,eAAe,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YAC1D,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC;KACL,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzD,SAAS;IACT,gBAAgB,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAgB,UAAU;IACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DatabaseTreeProvider = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ /**
39
+ * 树形视图项目
40
+ */
41
+ class DatabaseItem extends vscode.TreeItem {
42
+ constructor(label, collapsibleState, contextValue, connection, database, table) {
43
+ super(label, collapsibleState);
44
+ this.label = label;
45
+ this.collapsibleState = collapsibleState;
46
+ this.contextValue = contextValue;
47
+ this.connection = connection;
48
+ this.database = database;
49
+ this.table = table;
50
+ // 设置图标
51
+ this.iconPath = this.getIconPath(contextValue);
52
+ // 设置描述
53
+ if (contextValue === 'connection' && connection) {
54
+ this.description = `${connection.host}:${connection.port}`;
55
+ }
56
+ else if (contextValue === 'table' && table) {
57
+ this.description = table.type;
58
+ }
59
+ }
60
+ getIconPath(contextValue) {
61
+ switch (contextValue) {
62
+ case 'connection':
63
+ return new vscode.ThemeIcon('database');
64
+ case 'database':
65
+ return new vscode.ThemeIcon('server');
66
+ case 'table':
67
+ return new vscode.ThemeIcon('table');
68
+ case 'view':
69
+ return new vscode.ThemeIcon('preview');
70
+ case 'table-actions':
71
+ return new vscode.ThemeIcon('ellipsis');
72
+ default:
73
+ return new vscode.ThemeIcon('circle-outline');
74
+ }
75
+ }
76
+ }
77
+ /**
78
+ * 数据库树形视图提供者
79
+ * 提供侧边栏的数据库连接和结构树
80
+ */
81
+ class DatabaseTreeProvider {
82
+ constructor(context, dbBridge) {
83
+ this.context = context;
84
+ this.dbBridge = dbBridge;
85
+ this._onDidChangeTreeData = new vscode.EventEmitter();
86
+ this.onDidChangeTreeData = this._onDidChangeTreeData.event;
87
+ }
88
+ refresh() {
89
+ this._onDidChangeTreeData.fire(undefined);
90
+ }
91
+ getTreeItem(element) {
92
+ return element;
93
+ }
94
+ async getChildren(element) {
95
+ if (!element) {
96
+ // 根节点:显示所有连接
97
+ const connections = await this.dbBridge.connection.getAllConnections();
98
+ return connections.map((conn) => {
99
+ const item = new DatabaseItem(conn.name, vscode.TreeItemCollapsibleState.Collapsed, 'connection', conn);
100
+ item.command = {
101
+ command: 'fdb2.openDatabasePanel',
102
+ title: '打开数据库',
103
+ arguments: [conn]
104
+ };
105
+ return item;
106
+ });
107
+ }
108
+ if (element.contextValue === 'connection') {
109
+ // 连接节点:显示数据库列表(SQLite 不显示)
110
+ if (element.connection?.type === 'sqlite') {
111
+ return await this.getTables(element.connection, '');
112
+ }
113
+ return await this.getDatabases(element.connection);
114
+ }
115
+ if (element.contextValue === 'database') {
116
+ // 数据库节点:显示表列表
117
+ return await this.getTables(element.connection, element.database?.name || '');
118
+ }
119
+ if (element.contextValue === 'table' || element.contextValue === 'view') {
120
+ // 表节点:显示操作按钮
121
+ return [
122
+ new DatabaseItem('查看数据', vscode.TreeItemCollapsibleState.None, 'table-actions'),
123
+ new DatabaseItem('查看结构', vscode.TreeItemCollapsibleState.None, 'table-actions'),
124
+ new DatabaseItem('导出数据', vscode.TreeItemCollapsibleState.None, 'table-actions')
125
+ ];
126
+ }
127
+ return [];
128
+ }
129
+ /**
130
+ * 获取数据库列表
131
+ */
132
+ async getDatabases(connection) {
133
+ if (!connection)
134
+ return [];
135
+ try {
136
+ const databases = await this.dbBridge.database.getDatabases(connection.id);
137
+ return databases.map(db => new DatabaseItem(db, vscode.TreeItemCollapsibleState.Collapsed, 'database', connection, db));
138
+ }
139
+ catch (error) {
140
+ vscode.window.showErrorMessage(`获取数据库列表失败: ${error.message}`);
141
+ return [];
142
+ }
143
+ }
144
+ /**
145
+ * 获取表列表
146
+ */
147
+ async getTables(connection, databaseName) {
148
+ try {
149
+ const tables = await this.dbBridge.database.getTables(connection.id, databaseName);
150
+ return tables.map(table => new DatabaseItem(table.name, vscode.TreeItemCollapsibleState.Collapsed, table.type === 'view' ? 'view' : 'table', connection, undefined, table));
151
+ }
152
+ catch (error) {
153
+ vscode.window.showErrorMessage(`获取表列表失败: ${error.message}`);
154
+ return [];
155
+ }
156
+ }
157
+ }
158
+ exports.DatabaseTreeProvider = DatabaseTreeProvider;
159
+ //# sourceMappingURL=DatabaseTreeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseTreeProvider.js","sourceRoot":"","sources":["../../src/provider/DatabaseTreeProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAcjC;;GAEG;AACH,MAAM,YAAa,SAAQ,MAAM,CAAC,QAAQ;IACtC,YACoB,KAAa,EACb,gBAAiD,EACjD,YAA6B,EAC7B,UAA+B,EAC/B,QAAuB,EACvB,KAAiB;QAEjC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAPf,UAAK,GAAL,KAAK,CAAQ;QACb,qBAAgB,GAAhB,gBAAgB,CAAiC;QACjD,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,eAAU,GAAV,UAAU,CAAqB;QAC/B,aAAQ,GAAR,QAAQ,CAAe;QACvB,UAAK,GAAL,KAAK,CAAY;QAIjC,OAAO;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE/C,OAAO;QACP,IAAI,YAAY,KAAK,YAAY,IAAI,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/D,CAAC;aAAM,IAAI,YAAY,KAAK,OAAO,IAAI,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,YAA6B;QAC7C,QAAQ,YAAY,EAAE,CAAC;YACnB,KAAK,YAAY;gBACb,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C,KAAK,UAAU;gBACX,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,KAAK,OAAO;gBACR,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM;gBACP,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,KAAK,eAAe;gBAChB,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5C;gBACI,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ;AAED;;;GAGG;AACH,MAAa,oBAAoB;IAI7B,YACY,OAAgC,EAChC,QAA+B;QAD/B,YAAO,GAAP,OAAO,CAAyB;QAChC,aAAQ,GAAR,QAAQ,CAAuB;QALnC,yBAAoB,GAAG,IAAI,MAAM,CAAC,YAAY,EAA4B,CAAC;QAC1E,wBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAK5D,CAAC;IAEJ,OAAO;QACH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAqB;QAC7B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAsB;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,aAAa;YACb,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACvE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,IAAI,YAAY,CACzB,IAAI,CAAC,IAAI,EACT,MAAM,CAAC,wBAAwB,CAAC,SAAS,EACzC,YAAY,EACZ,IAAI,CACP,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG;oBACX,OAAO,EAAE,wBAAwB;oBACjC,KAAK,EAAE,OAAO;oBACd,SAAS,EAAE,CAAC,IAAI,CAAC;iBACpB,CAAC;gBACF,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACxC,2BAA2B;YAC3B,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YACtC,cAAc;YACd,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACtE,aAAa;YACb,OAAO;gBACH,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC;gBAC/E,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC;gBAC/E,IAAI,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC;aAClF,CAAC;QACN,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,UAA8B;QACrD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACtB,IAAI,YAAY,CACZ,EAAE,EACF,MAAM,CAAC,wBAAwB,CAAC,SAAS,EACzC,UAAU,EACV,UAAU,EACV,EAAE,CACL,CACJ,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAC,UAA8B,EAAE,YAAoB;QACxE,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CACtB,IAAI,YAAY,CACZ,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,wBAAwB,CAAC,SAAS,EACzC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACxC,UAAU,EACV,SAAS,EACT,KAAK,CACR,CACJ,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAzGD,oDAyGC"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WebViewProvider = void 0;
37
+ const vscode = __importStar(require("vscode"));
38
+ const path = __importStar(require("path"));
39
+ /**
40
+ * WebView 提供者
41
+ * 负责创建和管理 WebView 面板
42
+ */
43
+ class WebViewProvider {
44
+ constructor(context, dbBridge) {
45
+ this.context = context;
46
+ this.dbBridge = dbBridge;
47
+ this.panels = new Map();
48
+ }
49
+ /**
50
+ * 显示查询面板
51
+ */
52
+ async showQueryPanel() {
53
+ const panel = vscode.window.createWebviewPanel('fdb2.query', 'SQL 查询', vscode.ViewColumn.One, {
54
+ enableScripts: true,
55
+ retainContextWhenHidden: true,
56
+ localResourceRoots: [
57
+ vscode.Uri.file(path.join(this.context.extensionPath, 'resources', 'webview'))
58
+ ]
59
+ });
60
+ panel.webview.html = this.getWebviewContent(panel.webview, 'query');
61
+ this.setupMessageHandler(panel, 'query');
62
+ this.panels.set('query', panel);
63
+ // 发送连接列表
64
+ this.sendConnections(panel);
65
+ }
66
+ /**
67
+ * 显示数据库管理面板
68
+ */
69
+ async showDatabasePanel(connection) {
70
+ const panel = vscode.window.createWebviewPanel('fdb2.database', '数据库管理', vscode.ViewColumn.One, {
71
+ enableScripts: true,
72
+ retainContextWhenHidden: true,
73
+ localResourceRoots: [
74
+ vscode.Uri.file(path.join(this.context.extensionPath, 'resources', 'webview'))
75
+ ]
76
+ });
77
+ panel.webview.html = this.getWebviewContent(panel.webview, 'database');
78
+ this.setupMessageHandler(panel, 'database');
79
+ this.panels.set('database', panel);
80
+ // 如果指定了连接,发送连接信息
81
+ if (connection) {
82
+ panel.webview.postMessage({ command: 'selectConnection', data: connection });
83
+ }
84
+ }
85
+ /**
86
+ * 显示添加连接面板
87
+ */
88
+ async showAddConnectionPanel() {
89
+ const panel = vscode.window.createWebviewPanel('fdb2.connection', '添加数据库连接', vscode.ViewColumn.One, {
90
+ enableScripts: true,
91
+ retainContextWhenHidden: true
92
+ });
93
+ panel.webview.html = this.getWebviewContent(panel.webview, 'connection');
94
+ this.setupMessageHandler(panel, 'connection');
95
+ panel.onDidDispose(() => {
96
+ // 面板关闭后刷新树形视图
97
+ vscode.commands.executeCommand('fdb2.refreshConnections');
98
+ });
99
+ }
100
+ /**
101
+ * 显示编辑连接面板
102
+ */
103
+ async showEditConnectionPanel(connection) {
104
+ const panel = vscode.window.createWebviewPanel('fdb2.connection', '编辑数据库连接', vscode.ViewColumn.One, {
105
+ enableScripts: true,
106
+ retainContextWhenHidden: true
107
+ });
108
+ panel.webview.html = this.getWebviewContent(panel.webview, 'connection');
109
+ this.setupMessageHandler(panel, 'connection');
110
+ // 发送连接数据用于编辑
111
+ setTimeout(() => {
112
+ panel.webview.postMessage({ command: 'editConnection', data: connection });
113
+ }, 100);
114
+ panel.onDidDispose(() => {
115
+ vscode.commands.executeCommand('fdb2.refreshConnections');
116
+ });
117
+ }
118
+ /**
119
+ * 获取 WebView 内容
120
+ */
121
+ getWebviewContent(webview, type) {
122
+ const scriptPath = path.join(this.context.extensionPath, 'resources', 'webview', `${type}.js`);
123
+ const stylePath = path.join(this.context.extensionPath, 'resources', 'webview', `${type}.css`);
124
+ const scriptUri = webview.asWebviewUri(vscode.Uri.file(scriptPath));
125
+ const styleUri = webview.asWebviewUri(vscode.Uri.file(stylePath));
126
+ // 获取数据库类型列表
127
+ const databaseTypes = this.getDatabaseTypes();
128
+ return `<!DOCTYPE html>
129
+ <html lang="zh-CN">
130
+ <head>
131
+ <meta charset="UTF-8">
132
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
133
+ <title>Database Tool</title>
134
+ <link rel="stylesheet" href="${styleUri}">
135
+ <style>
136
+ body {
137
+ margin: 0;
138
+ padding: 0;
139
+ font-family: var(--vscode-font-family);
140
+ color: var(--vscode-foreground);
141
+ background-color: var(--vscode-editor-background);
142
+ }
143
+ #app {
144
+ height: 100vh;
145
+ overflow: auto;
146
+ }
147
+ </style>
148
+ </head>
149
+ <body>
150
+ <div id="app"></div>
151
+ <script>
152
+ // VSCode API
153
+ const vscode = acquireVsCodeApi();
154
+
155
+ // 数据库类型配置
156
+ window.DATABASE_TYPES = ${JSON.stringify(databaseTypes)};
157
+ </script>
158
+ <script src="${scriptUri}"></script>
159
+ </body>
160
+ </html>`;
161
+ }
162
+ /**
163
+ * 设置消息处理器
164
+ */
165
+ setupMessageHandler(panel, type) {
166
+ panel.webview.onDidReceiveMessage(async (message) => {
167
+ await this.handleMessage(panel, message);
168
+ }, undefined, this.context.subscriptions);
169
+ panel.onDidDispose(() => {
170
+ this.panels.delete(type);
171
+ });
172
+ }
173
+ /**
174
+ * 处理来自 WebView 的消息
175
+ */
176
+ async handleMessage(panel, message) {
177
+ try {
178
+ switch (message.command) {
179
+ case 'getConnections':
180
+ this.sendConnections(panel);
181
+ break;
182
+ case 'addConnection':
183
+ await this.dbBridge.connection.addConnection(message.data);
184
+ panel.webview.postMessage({ command: 'connectionAdded', data: message.data });
185
+ vscode.window.showInformationMessage('连接添加成功');
186
+ break;
187
+ case 'updateConnection':
188
+ await this.dbBridge.connection.updateConnection(message.data.id, message.data);
189
+ panel.webview.postMessage({ command: 'connectionUpdated', data: message.data });
190
+ vscode.window.showInformationMessage('连接更新成功');
191
+ break;
192
+ case 'testConnection':
193
+ const success = await this.dbBridge.connection.testConnection(message.data);
194
+ panel.webview.postMessage({ command: 'testResult', data: { success } });
195
+ if (success) {
196
+ vscode.window.showInformationMessage('连接测试成功');
197
+ }
198
+ else {
199
+ vscode.window.showErrorMessage('连接测试失败');
200
+ }
201
+ break;
202
+ case 'executeQuery':
203
+ const queryResult = await this.dbBridge.database.executeQuery(message.data.connectionId, message.data.sql, message.data.database);
204
+ panel.webview.postMessage({
205
+ command: 'queryResult',
206
+ data: queryResult
207
+ });
208
+ break;
209
+ case 'getTables':
210
+ const tables = await this.dbBridge.database.getTables(message.data.connectionId, message.data.database);
211
+ panel.webview.postMessage({
212
+ command: 'tables',
213
+ data: tables
214
+ });
215
+ break;
216
+ case 'getDatabases':
217
+ const databases = await this.dbBridge.database.getDatabases(message.data.connectionId);
218
+ panel.webview.postMessage({
219
+ command: 'databases',
220
+ data: databases
221
+ });
222
+ break;
223
+ default:
224
+ console.warn('Unknown command:', message.command);
225
+ }
226
+ }
227
+ catch (error) {
228
+ vscode.window.showErrorMessage(`操作失败: ${error.message}`);
229
+ panel.webview.postMessage({
230
+ command: 'error',
231
+ data: error.message
232
+ });
233
+ }
234
+ }
235
+ /**
236
+ * 发送连接列表到 WebView
237
+ */
238
+ async sendConnections(panel) {
239
+ const connections = await this.dbBridge.connection.getAllConnections();
240
+ panel.webview.postMessage({ command: 'connections', data: connections });
241
+ }
242
+ /**
243
+ * 获取数据库类型列表
244
+ */
245
+ getDatabaseTypes() {
246
+ return [
247
+ { type: 'mysql', name: 'MySQL', defaultPort: 3306 },
248
+ { type: 'postgresql', name: 'PostgreSQL', defaultPort: 5432 },
249
+ { type: 'sqlite', name: 'SQLite', defaultPort: 0 },
250
+ { type: 'sqlserver', name: 'SQL Server', defaultPort: 1433 },
251
+ { type: 'oracle', name: 'Oracle', defaultPort: 1521 },
252
+ { type: 'cockroachdb', name: 'CockroachDB', defaultPort: 26257 },
253
+ { type: 'mongodb', name: 'MongoDB', defaultPort: 27017 },
254
+ { type: 'sap_hana', name: 'SAP HANA', defaultPort: 39013 }
255
+ ];
256
+ }
257
+ }
258
+ exports.WebViewProvider = WebViewProvider;
259
+ //# sourceMappingURL=WebViewProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebViewProvider.js","sourceRoot":"","sources":["../../src/provider/WebViewProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionManager = void 0;
4
+ const events_1 = require("events");
5
+ /**
6
+ * 连接管理器
7
+ * 负责管理数据库连接的增删改查和持久化
8
+ */
9
+ class ConnectionManager extends events_1.EventEmitter {
10
+ constructor(context) {
11
+ super();
12
+ this.context = context;
13
+ this.connections = new Map();
14
+ this.loadConnections();
15
+ }
16
+ /**
17
+ * 从持久化存储加载连接
18
+ */
19
+ async loadConnections() {
20
+ const stored = this.context.globalState.get('fdb2.connections', []);
21
+ this.connections.clear();
22
+ stored.forEach(conn => {
23
+ this.connections.set(conn.id, conn);
24
+ });
25
+ }
26
+ /**
27
+ * 保存连接到持久化存储
28
+ */
29
+ async saveConnections() {
30
+ const connections = Array.from(this.connections.values());
31
+ await this.context.globalState.update('fdb2.connections', connections);
32
+ }
33
+ /**
34
+ * 获取所有连接
35
+ */
36
+ getAllConnections() {
37
+ return Array.from(this.connections.values());
38
+ }
39
+ /**
40
+ * 根据ID获取连接
41
+ */
42
+ getConnectionById(id) {
43
+ return this.connections.get(id);
44
+ }
45
+ /**
46
+ * 添加连接
47
+ */
48
+ async addConnection(connection) {
49
+ connection.id = this.generateId();
50
+ connection.createdAt = Date.now();
51
+ connection.updatedAt = Date.now();
52
+ this.connections.set(connection.id, connection);
53
+ await this.saveConnections();
54
+ this.emit('connectionsChanged');
55
+ }
56
+ /**
57
+ * 更新连接
58
+ */
59
+ async updateConnection(id, updates) {
60
+ const connection = this.connections.get(id);
61
+ if (!connection) {
62
+ throw new Error(`连接 ${id} 不存在`);
63
+ }
64
+ Object.assign(connection, updates, {
65
+ id,
66
+ updatedAt: Date.now()
67
+ });
68
+ this.connections.set(id, connection);
69
+ await this.saveConnections();
70
+ this.emit('connectionsChanged');
71
+ }
72
+ /**
73
+ * 删除连接
74
+ */
75
+ async deleteConnection(id) {
76
+ if (!this.connections.has(id)) {
77
+ throw new Error(`连接 ${id} 不存在`);
78
+ }
79
+ this.connections.delete(id);
80
+ await this.saveConnections();
81
+ this.emit('connectionsChanged');
82
+ }
83
+ /**
84
+ * 测试连接
85
+ */
86
+ async testConnection(connection) {
87
+ // TODO: 实现真实的连接测试
88
+ console.log('Testing connection:', connection.name);
89
+ return true;
90
+ }
91
+ /**
92
+ * 生成唯一ID
93
+ */
94
+ generateId() {
95
+ return `conn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
96
+ }
97
+ /**
98
+ * 连接变化事件
99
+ */
100
+ onDidChangeConnections(callback) {
101
+ this.on('connectionsChanged', callback);
102
+ }
103
+ }
104
+ exports.ConnectionManager = ConnectionManager;
105
+ //# sourceMappingURL=ConnectionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../src/service/ConnectionManager.ts"],"names":[],"mappings":"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"}