fdb2 1.0.13 → 1.0.14

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 (313) hide show
  1. package/README.md +9 -2
  2. package/bin/docker/.env +4 -0
  3. package/package.json +16 -8
  4. package/public/favicon.ico +0 -0
  5. package/public/favicon.png +0 -0
  6. package/view/modules/header.tpl +1 -1
  7. package/.dockerignore +0 -21
  8. package/.editorconfig +0 -11
  9. package/.eslintrc.cjs +0 -14
  10. package/.eslintrc.json +0 -7
  11. package/.prettierrc.js +0 -3
  12. package/.tpl.env +0 -22
  13. package/.vscodeignore +0 -45
  14. package/dist/package.json +0 -115
  15. package/dist/pnpm-lock.yaml +0 -8135
  16. package/dist/public/.vite/manifest.json +0 -82
  17. package/dist/public/bootstrap-icons.woff +0 -0
  18. package/dist/public/bootstrap-icons.woff2 +0 -0
  19. package/dist/public/bootstrap.css +0 -14152
  20. package/dist/public/bootstrap.js +0 -5038
  21. package/dist/public/explorer.css +0 -2379
  22. package/dist/public/explorer.js +0 -50586
  23. package/dist/public/index.css +0 -1099
  24. package/dist/public/index.js +0 -12862
  25. package/dist/public/layout.css +0 -318
  26. package/dist/public/layout.js +0 -25
  27. package/dist/public/vue.css +0 -1
  28. package/dist/public/vue.js +0 -9110
  29. package/dist/scripts/preinstall.js +0 -112
  30. package/dist/server/index.d.ts +0 -2
  31. package/dist/server/index.d.ts.map +0 -1
  32. package/dist/server/index.js +0 -601
  33. package/dist/server/index.js.map +0 -1
  34. package/dist/server/index.ts +0 -681
  35. package/dist/server/model/connection.entity.d.ts +0 -55
  36. package/dist/server/model/connection.entity.d.ts.map +0 -1
  37. package/dist/server/model/connection.entity.js +0 -59
  38. package/dist/server/model/connection.entity.js.map +0 -1
  39. package/dist/server/model/connection.entity.ts +0 -66
  40. package/dist/server/model/database.entity.d.ts +0 -203
  41. package/dist/server/model/database.entity.d.ts.map +0 -1
  42. package/dist/server/model/database.entity.js +0 -211
  43. package/dist/server/model/database.entity.js.map +0 -1
  44. package/dist/server/model/database.entity.ts +0 -246
  45. package/dist/server/service/connection.service.d.ts +0 -84
  46. package/dist/server/service/connection.service.d.ts.map +0 -1
  47. package/dist/server/service/connection.service.js +0 -369
  48. package/dist/server/service/connection.service.js.map +0 -1
  49. package/dist/server/service/connection.service.ts +0 -359
  50. package/dist/server/service/database/base.service.d.ts +0 -183
  51. package/dist/server/service/database/base.service.d.ts.map +0 -1
  52. package/dist/server/service/database/base.service.js +0 -253
  53. package/dist/server/service/database/base.service.js.map +0 -1
  54. package/dist/server/service/database/base.service.ts +0 -407
  55. package/dist/server/service/database/cockroachdb.service.d.ts +0 -116
  56. package/dist/server/service/database/cockroachdb.service.d.ts.map +0 -1
  57. package/dist/server/service/database/cockroachdb.service.js +0 -812
  58. package/dist/server/service/database/cockroachdb.service.js.map +0 -1
  59. package/dist/server/service/database/cockroachdb.service.ts +0 -871
  60. package/dist/server/service/database/database.service.d.ts +0 -495
  61. package/dist/server/service/database/database.service.d.ts.map +0 -1
  62. package/dist/server/service/database/database.service.js +0 -711
  63. package/dist/server/service/database/database.service.js.map +0 -1
  64. package/dist/server/service/database/database.service.ts +0 -776
  65. package/dist/server/service/database/index.d.ts +0 -8
  66. package/dist/server/service/database/index.d.ts.map +0 -1
  67. package/dist/server/service/database/index.js +0 -18
  68. package/dist/server/service/database/index.js.map +0 -1
  69. package/dist/server/service/database/index.ts +0 -7
  70. package/dist/server/service/database/mongodb.service.d.ts +0 -121
  71. package/dist/server/service/database/mongodb.service.d.ts.map +0 -1
  72. package/dist/server/service/database/mongodb.service.js +0 -502
  73. package/dist/server/service/database/mongodb.service.js.map +0 -1
  74. package/dist/server/service/database/mongodb.service.ts +0 -501
  75. package/dist/server/service/database/mssql.service.d.ts +0 -118
  76. package/dist/server/service/database/mssql.service.d.ts.map +0 -1
  77. package/dist/server/service/database/mssql.service.js +0 -871
  78. package/dist/server/service/database/mssql.service.js.map +0 -1
  79. package/dist/server/service/database/mssql.service.ts +0 -932
  80. package/dist/server/service/database/mysql.service.d.ts +0 -114
  81. package/dist/server/service/database/mysql.service.d.ts.map +0 -1
  82. package/dist/server/service/database/mysql.service.js +0 -960
  83. package/dist/server/service/database/mysql.service.js.map +0 -1
  84. package/dist/server/service/database/mysql.service.ts +0 -1026
  85. package/dist/server/service/database/oracle.service.d.ts +0 -126
  86. package/dist/server/service/database/oracle.service.d.ts.map +0 -1
  87. package/dist/server/service/database/oracle.service.js +0 -963
  88. package/dist/server/service/database/oracle.service.js.map +0 -1
  89. package/dist/server/service/database/oracle.service.ts +0 -1036
  90. package/dist/server/service/database/postgres.service.d.ts +0 -122
  91. package/dist/server/service/database/postgres.service.d.ts.map +0 -1
  92. package/dist/server/service/database/postgres.service.js +0 -882
  93. package/dist/server/service/database/postgres.service.js.map +0 -1
  94. package/dist/server/service/database/postgres.service.ts +0 -961
  95. package/dist/server/service/database/sap.service.d.ts +0 -115
  96. package/dist/server/service/database/sap.service.d.ts.map +0 -1
  97. package/dist/server/service/database/sap.service.js +0 -868
  98. package/dist/server/service/database/sap.service.js.map +0 -1
  99. package/dist/server/service/database/sap.service.ts +0 -922
  100. package/dist/server/service/database/sqlite.service.d.ts +0 -112
  101. package/dist/server/service/database/sqlite.service.d.ts.map +0 -1
  102. package/dist/server/service/database/sqlite.service.js +0 -723
  103. package/dist/server/service/database/sqlite.service.js.map +0 -1
  104. package/dist/server/service/database/sqlite.service.ts +0 -787
  105. package/dist/server/service/session.service.ts +0 -158
  106. package/dist/view/index.html +0 -45
  107. package/env.d.ts +0 -1
  108. package/packages/vscode/.vscodeignore +0 -44
  109. package/packages/vscode/README.md +0 -62
  110. package/packages/vscode/out/database-services/base.service.js +0 -236
  111. package/packages/vscode/out/database-services/base.service.js.map +0 -1
  112. package/packages/vscode/out/database-services/cockroachdb.service.js +0 -634
  113. package/packages/vscode/out/database-services/cockroachdb.service.js.map +0 -1
  114. package/packages/vscode/out/database-services/connection.service.js +0 -346
  115. package/packages/vscode/out/database-services/connection.service.js.map +0 -1
  116. package/packages/vscode/out/database-services/database.service.js +0 -571
  117. package/packages/vscode/out/database-services/database.service.js.map +0 -1
  118. package/packages/vscode/out/database-services/index.js +0 -18
  119. package/packages/vscode/out/database-services/index.js.map +0 -1
  120. package/packages/vscode/out/database-services/model/connection.entity.js +0 -11
  121. package/packages/vscode/out/database-services/model/connection.entity.js.map +0 -1
  122. package/packages/vscode/out/database-services/model/database.entity.js +0 -35
  123. package/packages/vscode/out/database-services/model/database.entity.js.map +0 -1
  124. package/packages/vscode/out/database-services/mongodb.service.js +0 -458
  125. package/packages/vscode/out/database-services/mongodb.service.js.map +0 -1
  126. package/packages/vscode/out/database-services/mssql.service.js +0 -694
  127. package/packages/vscode/out/database-services/mssql.service.js.map +0 -1
  128. package/packages/vscode/out/database-services/mysql.service.js +0 -735
  129. package/packages/vscode/out/database-services/mysql.service.js.map +0 -1
  130. package/packages/vscode/out/database-services/oracle.service.js +0 -787
  131. package/packages/vscode/out/database-services/oracle.service.js.map +0 -1
  132. package/packages/vscode/out/database-services/postgres.service.js +0 -696
  133. package/packages/vscode/out/database-services/postgres.service.js.map +0 -1
  134. package/packages/vscode/out/database-services/sap.service.js +0 -695
  135. package/packages/vscode/out/database-services/sap.service.js.map +0 -1
  136. package/packages/vscode/out/database-services/sqlite.service.js +0 -532
  137. package/packages/vscode/out/database-services/sqlite.service.js.map +0 -1
  138. package/packages/vscode/out/extension.js +0 -93
  139. package/packages/vscode/out/extension.js.map +0 -1
  140. package/packages/vscode/out/provider/DatabaseTreeProvider.js +0 -159
  141. package/packages/vscode/out/provider/DatabaseTreeProvider.js.map +0 -1
  142. package/packages/vscode/out/provider/WebViewProvider.js +0 -259
  143. package/packages/vscode/out/provider/WebViewProvider.js.map +0 -1
  144. package/packages/vscode/out/service/ConnectionManager.js +0 -105
  145. package/packages/vscode/out/service/ConnectionManager.js.map +0 -1
  146. package/packages/vscode/out/service/DatabaseServiceBridge.js +0 -395
  147. package/packages/vscode/out/service/DatabaseServiceBridge.js.map +0 -1
  148. package/packages/vscode/out/typings/connection.js +0 -3
  149. package/packages/vscode/out/typings/connection.js.map +0 -1
  150. package/packages/vscode/package.json +0 -144
  151. package/packages/vscode/resources/icon.svg +0 -5
  152. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js +0 -6529
  153. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js.map +0 -1
  154. package/packages/vscode/resources/webview/connection.css +0 -69
  155. package/packages/vscode/resources/webview/connection.js +0 -228
  156. package/packages/vscode/resources/webview/connection.js.map +0 -1
  157. package/packages/vscode/resources/webview/database.css +0 -259
  158. package/packages/vscode/resources/webview/database.js +0 -275
  159. package/packages/vscode/resources/webview/database.js.map +0 -1
  160. package/packages/vscode/resources/webview/favicon.ico +0 -0
  161. package/packages/vscode/resources/webview/index.html +0 -9
  162. package/packages/vscode/resources/webview/modules/header.tpl +0 -14
  163. package/packages/vscode/resources/webview/modules/initial_state.tpl +0 -55
  164. package/packages/vscode/resources/webview/query.css +0 -162
  165. package/packages/vscode/resources/webview/query.js +0 -198
  166. package/packages/vscode/resources/webview/query.js.map +0 -1
  167. package/packages/vscode/src/database-services/base.service.js.map +0 -1
  168. package/packages/vscode/src/database-services/base.service.ts +0 -363
  169. package/packages/vscode/src/database-services/cockroachdb.service.js.map +0 -1
  170. package/packages/vscode/src/database-services/cockroachdb.service.ts +0 -659
  171. package/packages/vscode/src/database-services/connection.service.ts +0 -341
  172. package/packages/vscode/src/database-services/database.service.ts +0 -630
  173. package/packages/vscode/src/database-services/index.ts +0 -7
  174. package/packages/vscode/src/database-services/model/connection.entity.js +0 -11
  175. package/packages/vscode/src/database-services/model/connection.entity.js.map +0 -1
  176. package/packages/vscode/src/database-services/model/connection.entity.ts +0 -66
  177. package/packages/vscode/src/database-services/model/database.entity.js +0 -35
  178. package/packages/vscode/src/database-services/model/database.entity.js.map +0 -1
  179. package/packages/vscode/src/database-services/model/database.entity.ts +0 -246
  180. package/packages/vscode/src/database-services/mongodb.service.js.map +0 -1
  181. package/packages/vscode/src/database-services/mongodb.service.ts +0 -454
  182. package/packages/vscode/src/database-services/mssql.service.js.map +0 -1
  183. package/packages/vscode/src/database-services/mssql.service.ts +0 -723
  184. package/packages/vscode/src/database-services/mysql.service.js.map +0 -1
  185. package/packages/vscode/src/database-services/mysql.service.ts +0 -761
  186. package/packages/vscode/src/database-services/oracle.service.js.map +0 -1
  187. package/packages/vscode/src/database-services/oracle.service.ts +0 -832
  188. package/packages/vscode/src/database-services/postgres.service.js.map +0 -1
  189. package/packages/vscode/src/database-services/postgres.service.ts +0 -741
  190. package/packages/vscode/src/database-services/sap.service.js.map +0 -1
  191. package/packages/vscode/src/database-services/sap.service.ts +0 -713
  192. package/packages/vscode/src/database-services/sqlite.service.js.map +0 -1
  193. package/packages/vscode/src/database-services/sqlite.service.ts +0 -558
  194. package/packages/vscode/src/extension.ts +0 -76
  195. package/packages/vscode/src/provider/DatabaseTreeProvider.ts +0 -167
  196. package/packages/vscode/src/provider/WebViewProvider.ts +0 -277
  197. package/packages/vscode/src/service/DatabaseServiceBridge.ts +0 -414
  198. package/packages/vscode/src/typings/connection.ts +0 -90
  199. package/packages/vscode/tsconfig.json +0 -21
  200. package/scripts/preinstall.js +0 -112
  201. package/server/index.ts +0 -681
  202. package/server/model/connection.entity.js +0 -11
  203. package/server/model/connection.entity.js.map +0 -1
  204. package/server/model/connection.entity.ts +0 -66
  205. package/server/model/database.entity.js +0 -35
  206. package/server/model/database.entity.js.map +0 -1
  207. package/server/model/database.entity.ts +0 -246
  208. package/server/service/connection.service.ts +0 -359
  209. package/server/service/database/base.service.ts +0 -407
  210. package/server/service/database/cockroachdb.service.ts +0 -871
  211. package/server/service/database/database.service.ts +0 -776
  212. package/server/service/database/index.ts +0 -7
  213. package/server/service/database/mongodb.service.ts +0 -501
  214. package/server/service/database/mssql.service.ts +0 -932
  215. package/server/service/database/mysql.service.ts +0 -1026
  216. package/server/service/database/oracle.service.ts +0 -1036
  217. package/server/service/database/postgres.service.ts +0 -961
  218. package/server/service/database/sap.service.ts +0 -922
  219. package/server/service/database/sqlite.service.ts +0 -787
  220. package/server/service/session.service.ts +0 -158
  221. package/server/tsconfig.json +0 -20
  222. package/src/adapter/ajax.ts +0 -135
  223. package/src/assets/base.css +0 -1
  224. package/src/assets/database.css +0 -950
  225. package/src/assets/images/collapse.png +0 -0
  226. package/src/assets/images/no-login.png +0 -0
  227. package/src/assets/images/svg/illustrations/illustration-1.svg +0 -1
  228. package/src/assets/images/svg/illustrations/illustration-2.svg +0 -2
  229. package/src/assets/images/svg/illustrations/illustration-3.svg +0 -50
  230. package/src/assets/images/svg/illustrations/illustration-4.svg +0 -1
  231. package/src/assets/images/svg/illustrations/illustration-5.svg +0 -73
  232. package/src/assets/images/svg/illustrations/illustration-6.svg +0 -89
  233. package/src/assets/images/svg/illustrations/illustration-7.svg +0 -39
  234. package/src/assets/images/svg/illustrations/illustration-8.svg +0 -1
  235. package/src/assets/images/svg/separators/curve-2.svg +0 -3
  236. package/src/assets/images/svg/separators/curve.svg +0 -3
  237. package/src/assets/images/svg/separators/line.svg +0 -3
  238. package/src/assets/images/theme/light/screen-1-1000x800.jpg +0 -0
  239. package/src/assets/images/theme/light/screen-2-1000x800.jpg +0 -0
  240. package/src/assets/login/bg.jpg +0 -0
  241. package/src/assets/login/bg.png +0 -0
  242. package/src/assets/login/left.jpg +0 -0
  243. package/src/assets/logo.svg +0 -73
  244. package/src/assets/logo.webp +0 -0
  245. package/src/assets/main.css +0 -1
  246. package/src/base/config.ts +0 -20
  247. package/src/base/detect.ts +0 -134
  248. package/src/base/entity.ts +0 -92
  249. package/src/base/eventBus.ts +0 -37
  250. package/src/components/connection-editor/index.vue +0 -589
  251. package/src/components/dataGrid/index.vue +0 -163
  252. package/src/components/dataGrid/pagination.vue +0 -106
  253. package/src/components/loading/index.vue +0 -43
  254. package/src/components/modal/index.ts +0 -181
  255. package/src/components/modal/index.vue +0 -560
  256. package/src/components/toast/index.ts +0 -44
  257. package/src/components/toast/toast.vue +0 -58
  258. package/src/components/user/name.vue +0 -104
  259. package/src/components/user/selector.vue +0 -416
  260. package/src/domain/SysConfig.ts +0 -74
  261. package/src/platform/App.vue +0 -8
  262. package/src/platform/database/components/connection-detail.vue +0 -1153
  263. package/src/platform/database/components/data-editor.vue +0 -478
  264. package/src/platform/database/components/data-import-export.vue +0 -1602
  265. package/src/platform/database/components/database-detail.vue +0 -1199
  266. package/src/platform/database/components/database-monitor.vue +0 -1086
  267. package/src/platform/database/components/db-tools.vue +0 -1265
  268. package/src/platform/database/components/query-history.vue +0 -1349
  269. package/src/platform/database/components/sql-executor.vue +0 -738
  270. package/src/platform/database/components/sql-query-editor.vue +0 -1046
  271. package/src/platform/database/components/table-data-grid.vue +0 -273
  272. package/src/platform/database/components/table-detail.vue +0 -1173
  273. package/src/platform/database/components/table-editor.vue +0 -917
  274. package/src/platform/database/explorer.vue +0 -1840
  275. package/src/platform/database/index.vue +0 -1193
  276. package/src/platform/database/layout.vue +0 -367
  277. package/src/platform/database/router.ts +0 -37
  278. package/src/platform/database/styles/common.scss +0 -602
  279. package/src/platform/database/types/common.ts +0 -445
  280. package/src/platform/database/utils/export.ts +0 -232
  281. package/src/platform/database/utils/helpers.ts +0 -437
  282. package/src/platform/index.ts +0 -33
  283. package/src/platform/router.ts +0 -41
  284. package/src/platform/vscode/bridge.ts +0 -121
  285. package/src/platform/vscode/components/ConnectionPanel.vue +0 -272
  286. package/src/platform/vscode/components/DatabasePanel.vue +0 -532
  287. package/src/platform/vscode/components/QueryPanel.vue +0 -371
  288. package/src/platform/vscode/entry/connection.ts +0 -13
  289. package/src/platform/vscode/entry/database.ts +0 -13
  290. package/src/platform/vscode/entry/query.ts +0 -13
  291. package/src/platform/vscode/index.ts +0 -5
  292. package/src/service/base.ts +0 -134
  293. package/src/service/database.ts +0 -506
  294. package/src/service/login.ts +0 -121
  295. package/src/shims-vue.d.ts +0 -7
  296. package/src/stores/connection.ts +0 -266
  297. package/src/stores/session.ts +0 -87
  298. package/src/typings/database-types.ts +0 -413
  299. package/src/typings/database.ts +0 -364
  300. package/src/typings/global.d.ts +0 -58
  301. package/src/typings/pinia.d.ts +0 -8
  302. package/src/utils/clipboard.ts +0 -30
  303. package/src/utils/database-types.ts +0 -243
  304. package/src/utils/modal.ts +0 -124
  305. package/src/utils/request.ts +0 -55
  306. package/src/utils/sleep.ts +0 -4
  307. package/src/utils/toast.ts +0 -73
  308. package/src/utils/util.ts +0 -171
  309. package/src/utils/xlsx.ts +0 -228
  310. package/tsconfig.json +0 -33
  311. package/tsconfig.server.json +0 -19
  312. package/vite.config.ts +0 -424
  313. package/vite.config.vscode.ts +0 -47
@@ -1,532 +0,0 @@
1
- <template>
2
- <div class="database-panel">
3
- <div class="panel-header">
4
- <h1 class="panel-title">数据库管理</h1>
5
- <div class="panel-actions">
6
- <button @click="handleAddConnection" class="btn btn-secondary">添加连接</button>
7
- </div>
8
- </div>
9
-
10
- <div style="margin-bottom: 20px;">
11
- <select v-model="selectedConnectionId" class="connection-selector" @change="handleConnectionChange">
12
- <option value="">选择数据库连接</option>
13
- <option v-for="conn in connections" :key="conn.id" :value="conn.id">
14
- {{ conn.name }} ({{ conn.host }}:{{ conn.port }})
15
- </option>
16
- </select>
17
- </div>
18
-
19
- <div id="contentArea">
20
- <div v-if="loading" class="loading">
21
- <div class="spinner"></div>
22
- <div>加载中...</div>
23
- </div>
24
- <div v-else-if="!selectedConnectionId" class="empty-state">
25
- <div class="empty-icon">🗄️</div>
26
- <div class="empty-title">未选择连接</div>
27
- <div class="empty-text">请从下拉列表中选择一个数据库连接</div>
28
- </div>
29
- <div v-else>
30
- <div class="tabs">
31
- <button
32
- v-for="tab in tabs"
33
- :key="tab.id"
34
- :class="['tab', { active: currentTab === tab.id }]"
35
- @click="currentTab = tab.id"
36
- >
37
- {{ tab.name }}
38
- </button>
39
- </div>
40
-
41
- <div v-show="currentTab === 'overview'" class="tab-content active">
42
- <h3 class="section-title">数据库概览</h3>
43
- <div class="database-grid">
44
- <div
45
- v-for="db in databases"
46
- :key="db.name"
47
- class="database-card"
48
- @click="selectDatabase(db)"
49
- >
50
- <div class="database-header">
51
- <div class="database-icon">🗄️</div>
52
- <div class="database-name">{{ db.name }}</div>
53
- </div>
54
- <div class="database-info">
55
- <span class="database-stat">📊 {{ db.tables }} 表</span>
56
- <span class="database-stat">💾 {{ db.size }}</span>
57
- </div>
58
- </div>
59
- </div>
60
- </div>
61
-
62
- <div v-show="currentTab === 'databases'" class="tab-content">
63
- <h3 class="section-title">数据库列表</h3>
64
- <div class="database-grid">
65
- <div
66
- v-for="db in databases"
67
- :key="db.name"
68
- class="database-card"
69
- @click="selectDatabase(db)"
70
- >
71
- <div class="database-header">
72
- <div class="database-icon">🗄️</div>
73
- <div class="database-name">{{ db.name }}</div>
74
- </div>
75
- <div class="database-info">
76
- <span class="database-stat">📊 {{ db.tables }} 表</span>
77
- <span class="database-stat">💾 {{ db.size }}</span>
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
-
83
- <div v-show="currentTab === 'tables'" class="tab-content">
84
- <h3 class="section-title">表列表</h3>
85
- <div class="table-list">
86
- <div
87
- v-for="table in tables"
88
- :key="table.name"
89
- class="table-item"
90
- >
91
- <div class="table-icon">{{ table.type === 'table' ? '📋' : '👁️' }}</div>
92
- <div class="table-info">
93
- <div class="table-name">{{ table.name }}</div>
94
- <div v-if="table.comment" class="table-comment">{{ table.comment }}</div>
95
- <div v-if="table.rows !== null" class="table-meta">
96
- <span>{{ table.rows.toLocaleString() }} 行</span>
97
- <span>{{ table.engine || '' }}</span>
98
- <span>{{ table.size || '' }}</span>
99
- </div>
100
- </div>
101
- <span :class="['table-type', table.type]">{{ table.type === 'table' ? 'TABLE' : 'VIEW' }}</span>
102
- <div class="table-actions">
103
- <button class="action-btn" @click.stop="handleViewData(table)">数据</button>
104
- <button class="action-btn" @click.stop="handleViewStructure(table)">结构</button>
105
- </div>
106
- </div>
107
- </div>
108
- </div>
109
- </div>
110
- </div>
111
- </div>
112
- </template>
113
-
114
- <script setup lang="ts">
115
- import { ref, reactive, computed, onMounted } from 'vue';
116
- import { getVSCodeBridge } from '../bridge';
117
-
118
- const vscode = getVSCodeBridge();
119
-
120
- const connections = ref<any[]>([]);
121
- const selectedConnectionId = ref('');
122
- const databases = ref<any[]>([]);
123
- const tables = ref<any[]>([]);
124
- const loading = ref(false);
125
- const currentTab = ref('overview');
126
-
127
- const selectedConnection = computed(() => {
128
- return connections.value.find(c => c.id === selectedConnectionId.value);
129
- });
130
-
131
- const tabs = [
132
- { id: 'overview', name: '概览' },
133
- { id: 'databases', name: '数据库' },
134
- { id: 'tables', name: '表' }
135
- ];
136
-
137
- onMounted(() => {
138
- // 请求连接列表
139
- vscode.postMessage({ command: 'getConnections' });
140
-
141
- // 监听来自扩展的消息
142
- vscode.onMessage((message: any) => {
143
- if (message.command === 'connections') {
144
- connections.value = message.data;
145
- } else if (message.command === 'selectConnection') {
146
- selectConnection(message.data);
147
- } else if (message.command === 'databases') {
148
- databases.value = message.data;
149
- loading.value = false;
150
- } else if (message.command === 'tables') {
151
- tables.value = message.data;
152
- loading.value = false;
153
- } else if (message.command === 'error') {
154
- handleError(message.data);
155
- }
156
- });
157
- });
158
-
159
- function handleAddConnection() {
160
- vscode.postMessage({ command: 'addConnection' });
161
- }
162
-
163
- function handleConnectionChange() {
164
- if (selectedConnectionId.value) {
165
- const connection = connections.value.find(c => c.id === selectedConnectionId.value);
166
- selectConnection(connection);
167
- } else {
168
- databases.value = [];
169
- tables.value = [];
170
- }
171
- }
172
-
173
- function selectConnection(connection: any) {
174
- if (!connection) return;
175
-
176
- selectedConnectionId.value = connection.id;
177
- loading.value = true;
178
-
179
- // 请求数据库列表
180
- vscode.postMessage({
181
- command: 'getDatabases',
182
- data: { connectionId: connection.id }
183
- });
184
- }
185
-
186
- function selectDatabase(database: any) {
187
- loading.value = true;
188
- currentTab.value = 'tables';
189
-
190
- // 请求表列表
191
- vscode.postMessage({
192
- command: 'getTables',
193
- data: {
194
- connectionId: selectedConnectionId.value,
195
- databaseName: database.name
196
- }
197
- });
198
- }
199
-
200
- function handleViewData(table: any) {
201
- vscode.postMessage({
202
- command: 'openTableData',
203
- data: {
204
- connectionId: selectedConnectionId.value,
205
- tableName: table.name
206
- }
207
- });
208
- }
209
-
210
- function handleViewStructure(table: any) {
211
- vscode.postMessage({
212
- command: 'openTableStructure',
213
- data: {
214
- connectionId: selectedConnectionId.value,
215
- tableName: table.name
216
- }
217
- });
218
- }
219
-
220
- function handleError(error: string) {
221
- loading.value = false;
222
- console.error('Error:', error);
223
- alert(`操作失败: ${error}`);
224
- }
225
- </script>
226
-
227
- <style scoped>
228
- .database-panel {
229
- padding: 16px;
230
- height: 100vh;
231
- overflow: auto;
232
- }
233
-
234
- .panel-header {
235
- display: flex;
236
- justify-content: space-between;
237
- align-items: center;
238
- margin-bottom: 20px;
239
- padding-bottom: 16px;
240
- border-bottom: 1px solid var(--vscode-panel-border);
241
- }
242
-
243
- .panel-title {
244
- font-size: 18px;
245
- font-weight: 600;
246
- margin: 0;
247
- color: var(--vscode-foreground);
248
- }
249
-
250
- .panel-actions {
251
- display: flex;
252
- gap: 8px;
253
- }
254
-
255
- .connection-selector {
256
- width: 300px;
257
- padding: 6px 10px;
258
- border: 1px solid var(--vscode-input-border);
259
- background-color: var(--vscode-input-background);
260
- color: var(--vscode-input-foreground);
261
- border-radius: 4px;
262
- font-size: 13px;
263
- }
264
-
265
- .btn {
266
- padding: 6px 14px;
267
- border: none;
268
- border-radius: 4px;
269
- font-size: 13px;
270
- cursor: pointer;
271
- transition: background-color 0.2s;
272
- }
273
-
274
- .btn-primary {
275
- background-color: var(--vscode-button-background);
276
- color: var(--vscode-button-foreground);
277
- }
278
-
279
- .btn-primary:hover {
280
- background-color: var(--vscode-button-hoverBackground);
281
- }
282
-
283
- .btn-secondary {
284
- background-color: var(--vscode-button-secondaryBackground);
285
- color: var(--vscode-button-secondaryForeground);
286
- }
287
-
288
- .btn-secondary:hover {
289
- background-color: var(--vscode-button-secondaryHoverBackground);
290
- }
291
-
292
- .database-grid {
293
- display: grid;
294
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
295
- gap: 16px;
296
- }
297
-
298
- .database-card {
299
- padding: 16px;
300
- background-color: var(--vscode-editor-background);
301
- border: 1px solid var(--vscode-panel-border);
302
- border-radius: 8px;
303
- cursor: pointer;
304
- transition: all 0.2s;
305
- }
306
-
307
- .database-card:hover {
308
- border-color: var(--vscode-focusBorder);
309
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
310
- transform: translateY(-2px);
311
- }
312
-
313
- .database-header {
314
- display: flex;
315
- align-items: center;
316
- gap: 12px;
317
- margin-bottom: 12px;
318
- }
319
-
320
- .database-icon {
321
- font-size: 28px;
322
- color: var(--vscode-textLink-foreground);
323
- }
324
-
325
- .database-name {
326
- flex: 1;
327
- font-size: 16px;
328
- font-weight: 600;
329
- color: var(--vscode-foreground);
330
- }
331
-
332
- .database-info {
333
- display: flex;
334
- gap: 16px;
335
- font-size: 12px;
336
- color: var(--vscode-descriptionForeground);
337
- }
338
-
339
- .database-stat {
340
- display: flex;
341
- align-items: center;
342
- gap: 4px;
343
- }
344
-
345
- .section-title {
346
- font-size: 16px;
347
- font-weight: 600;
348
- margin: 24px 0 16px 0;
349
- padding-bottom: 8px;
350
- border-bottom: 1px solid var(--vscode-panel-border);
351
- color: var(--vscode-foreground);
352
- }
353
-
354
- .tabs {
355
- display: flex;
356
- gap: 4px;
357
- margin-bottom: 16px;
358
- border-bottom: 1px solid var(--vscode-panel-border);
359
- }
360
-
361
- .tab {
362
- padding: 8px 16px;
363
- border: none;
364
- background-color: transparent;
365
- color: var(--vscode-foreground);
366
- font-size: 13px;
367
- cursor: pointer;
368
- border-bottom: 2px solid transparent;
369
- transition: all 0.2s;
370
- }
371
-
372
- .tab:hover {
373
- background-color: var(--vscode-list-hoverBackground);
374
- }
375
-
376
- .tab.active {
377
- border-bottom-color: var(--vscode-focusBorder);
378
- color: var(--vscode-textLink-foreground);
379
- }
380
-
381
- .tab-content {
382
- display: none;
383
- }
384
-
385
- .tab-content.active {
386
- display: block;
387
- }
388
-
389
- .table-list {
390
- display: flex;
391
- flex-direction: column;
392
- gap: 4px;
393
- }
394
-
395
- .table-item {
396
- display: flex;
397
- align-items: center;
398
- gap: 12px;
399
- padding: 12px;
400
- border-radius: 6px;
401
- cursor: pointer;
402
- transition: background-color 0.2s;
403
- }
404
-
405
- .table-item:hover {
406
- background-color: var(--vscode-list-hoverBackground);
407
- }
408
-
409
- .table-icon {
410
- font-size: 20px;
411
- color: var(--vscode-textLink-foreground);
412
- width: 24px;
413
- text-align: center;
414
- }
415
-
416
- .table-info {
417
- flex: 1;
418
- }
419
-
420
- .table-name {
421
- font-size: 14px;
422
- font-weight: 500;
423
- margin-bottom: 2px;
424
- color: var(--vscode-foreground);
425
- }
426
-
427
- .table-comment {
428
- font-size: 12px;
429
- color: var(--vscode-descriptionForeground);
430
- }
431
-
432
- .table-meta {
433
- display: flex;
434
- align-items: center;
435
- gap: 12px;
436
- font-size: 12px;
437
- color: var(--vscode-descriptionForeground);
438
- margin-top: 4px;
439
- }
440
-
441
- .table-type {
442
- padding: 2px 8px;
443
- border-radius: 12px;
444
- background-color: var(--vscode-badge-background);
445
- font-weight: 500;
446
- font-size: 12px;
447
- }
448
-
449
- .table-type.table {
450
- background-color: var(--vscode-badge-background);
451
- }
452
-
453
- .table-type.view {
454
- background-color: var(--vscode-gitDecorationModifiedResourceForeground);
455
- color: white;
456
- }
457
-
458
- .table-actions {
459
- display: flex;
460
- gap: 8px;
461
- opacity: 0;
462
- transition: opacity 0.2s;
463
- }
464
-
465
- .table-item:hover .table-actions {
466
- opacity: 1;
467
- }
468
-
469
- .action-btn {
470
- padding: 4px 8px;
471
- font-size: 12px;
472
- background-color: var(--vscode-button-secondaryBackground);
473
- color: var(--vscode-button-secondaryForeground);
474
- border: none;
475
- border-radius: 4px;
476
- cursor: pointer;
477
- }
478
-
479
- .action-btn:hover {
480
- background-color: var(--vscode-button-secondaryHoverBackground);
481
- }
482
-
483
- .empty-state {
484
- display: flex;
485
- flex-direction: column;
486
- align-items: center;
487
- justify-content: center;
488
- padding: 80px 20px;
489
- text-align: center;
490
- }
491
-
492
- .empty-icon {
493
- font-size: 64px;
494
- margin-bottom: 16px;
495
- opacity: 0.3;
496
- }
497
-
498
- .empty-title {
499
- font-size: 16px;
500
- font-weight: 600;
501
- margin-bottom: 8px;
502
- color: var(--vscode-foreground);
503
- }
504
-
505
- .empty-text {
506
- font-size: 14px;
507
- color: var(--vscode-descriptionForeground);
508
- }
509
-
510
- .loading {
511
- display: flex;
512
- flex-direction: column;
513
- align-items: center;
514
- justify-content: center;
515
- padding: 40px;
516
- }
517
-
518
- .spinner {
519
- width: 32px;
520
- height: 32px;
521
- border: 3px solid var(--vscode-progressBar-background);
522
- border-top-color: var(--vscode-progressBar-foreground);
523
- border-radius: 50%;
524
- animation: spin 0.6s linear infinite;
525
- }
526
-
527
- @keyframes spin {
528
- to {
529
- transform: rotate(360deg);
530
- }
531
- }
532
- </style>