fdb2 1.0.13 → 1.0.15

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 +26 -18
  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,275 +0,0 @@
1
- import { d as defineComponent, g as getVSCodeBridge, o as onMounted, a as openBlock, c as createElementBlock, b as createBaseVNode, w as withDirectives, e as vModelSelect, F as Fragment, r as renderList, t as toDisplayString, n as normalizeClass, m as vShow, f as createCommentVNode, h as withModifiers, i as ref, _ as _export_sfc, k as createApp } from "./_plugin-vue_export-helper.js";
2
- const _hoisted_1 = { class: "database-panel" };
3
- const _hoisted_2 = { style: { "margin-bottom": "20px" } };
4
- const _hoisted_3 = ["value"];
5
- const _hoisted_4 = { id: "contentArea" };
6
- const _hoisted_5 = {
7
- key: 0,
8
- class: "loading"
9
- };
10
- const _hoisted_6 = {
11
- key: 1,
12
- class: "empty-state"
13
- };
14
- const _hoisted_7 = { key: 2 };
15
- const _hoisted_8 = { class: "tabs" };
16
- const _hoisted_9 = ["onClick"];
17
- const _hoisted_10 = { class: "tab-content active" };
18
- const _hoisted_11 = { class: "database-grid" };
19
- const _hoisted_12 = ["onClick"];
20
- const _hoisted_13 = { class: "database-header" };
21
- const _hoisted_14 = { class: "database-name" };
22
- const _hoisted_15 = { class: "database-info" };
23
- const _hoisted_16 = { class: "database-stat" };
24
- const _hoisted_17 = { class: "database-stat" };
25
- const _hoisted_18 = { class: "tab-content" };
26
- const _hoisted_19 = { class: "database-grid" };
27
- const _hoisted_20 = ["onClick"];
28
- const _hoisted_21 = { class: "database-header" };
29
- const _hoisted_22 = { class: "database-name" };
30
- const _hoisted_23 = { class: "database-info" };
31
- const _hoisted_24 = { class: "database-stat" };
32
- const _hoisted_25 = { class: "database-stat" };
33
- const _hoisted_26 = { class: "tab-content" };
34
- const _hoisted_27 = { class: "table-list" };
35
- const _hoisted_28 = { class: "table-icon" };
36
- const _hoisted_29 = { class: "table-info" };
37
- const _hoisted_30 = { class: "table-name" };
38
- const _hoisted_31 = {
39
- key: 0,
40
- class: "table-comment"
41
- };
42
- const _hoisted_32 = {
43
- key: 1,
44
- class: "table-meta"
45
- };
46
- const _hoisted_33 = { class: "table-actions" };
47
- const _hoisted_34 = ["onClick"];
48
- const _hoisted_35 = ["onClick"];
49
- const _sfc_main = /* @__PURE__ */ defineComponent({
50
- __name: "DatabasePanel",
51
- setup(__props) {
52
- const vscode = getVSCodeBridge();
53
- const connections = ref([]);
54
- const selectedConnectionId = ref("");
55
- const databases = ref([]);
56
- const tables = ref([]);
57
- const loading = ref(false);
58
- const currentTab = ref("overview");
59
- const tabs = [
60
- { id: "overview", name: "概览" },
61
- { id: "databases", name: "数据库" },
62
- { id: "tables", name: "表" }
63
- ];
64
- onMounted(() => {
65
- vscode.postMessage({ command: "getConnections" });
66
- vscode.onMessage((message) => {
67
- if (message.command === "connections") {
68
- connections.value = message.data;
69
- } else if (message.command === "selectConnection") {
70
- selectConnection(message.data);
71
- } else if (message.command === "databases") {
72
- databases.value = message.data;
73
- loading.value = false;
74
- } else if (message.command === "tables") {
75
- tables.value = message.data;
76
- loading.value = false;
77
- } else if (message.command === "error") {
78
- handleError(message.data);
79
- }
80
- });
81
- });
82
- function handleAddConnection() {
83
- vscode.postMessage({ command: "addConnection" });
84
- }
85
- function handleConnectionChange() {
86
- if (selectedConnectionId.value) {
87
- const connection = connections.value.find((c) => c.id === selectedConnectionId.value);
88
- selectConnection(connection);
89
- } else {
90
- databases.value = [];
91
- tables.value = [];
92
- }
93
- }
94
- function selectConnection(connection) {
95
- if (!connection) return;
96
- selectedConnectionId.value = connection.id;
97
- loading.value = true;
98
- vscode.postMessage({
99
- command: "getDatabases",
100
- data: { connectionId: connection.id }
101
- });
102
- }
103
- function selectDatabase(database) {
104
- loading.value = true;
105
- currentTab.value = "tables";
106
- vscode.postMessage({
107
- command: "getTables",
108
- data: {
109
- connectionId: selectedConnectionId.value,
110
- databaseName: database.name
111
- }
112
- });
113
- }
114
- function handleViewData(table) {
115
- vscode.postMessage({
116
- command: "openTableData",
117
- data: {
118
- connectionId: selectedConnectionId.value,
119
- tableName: table.name
120
- }
121
- });
122
- }
123
- function handleViewStructure(table) {
124
- vscode.postMessage({
125
- command: "openTableStructure",
126
- data: {
127
- connectionId: selectedConnectionId.value,
128
- tableName: table.name
129
- }
130
- });
131
- }
132
- function handleError(error) {
133
- loading.value = false;
134
- console.error("Error:", error);
135
- alert(`操作失败: ${error}`);
136
- }
137
- return (_ctx, _cache) => {
138
- return openBlock(), createElementBlock("div", _hoisted_1, [
139
- createBaseVNode("div", { class: "panel-header" }, [
140
- _cache[1] || (_cache[1] = createBaseVNode("h1", { class: "panel-title" }, "数据库管理", -1)),
141
- createBaseVNode("div", { class: "panel-actions" }, [
142
- createBaseVNode("button", {
143
- onClick: handleAddConnection,
144
- class: "btn btn-secondary"
145
- }, "添加连接")
146
- ])
147
- ]),
148
- createBaseVNode("div", _hoisted_2, [
149
- withDirectives(createBaseVNode("select", {
150
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedConnectionId.value = $event),
151
- class: "connection-selector",
152
- onChange: handleConnectionChange
153
- }, [
154
- _cache[2] || (_cache[2] = createBaseVNode("option", { value: "" }, "选择数据库连接", -1)),
155
- (openBlock(true), createElementBlock(Fragment, null, renderList(connections.value, (conn) => {
156
- return openBlock(), createElementBlock("option", {
157
- key: conn.id,
158
- value: conn.id
159
- }, toDisplayString(conn.name) + " (" + toDisplayString(conn.host) + ":" + toDisplayString(conn.port) + ") ", 9, _hoisted_3);
160
- }), 128))
161
- ], 544), [
162
- [vModelSelect, selectedConnectionId.value]
163
- ])
164
- ]),
165
- createBaseVNode("div", _hoisted_4, [
166
- loading.value ? (openBlock(), createElementBlock("div", _hoisted_5, [..._cache[3] || (_cache[3] = [
167
- createBaseVNode("div", { class: "spinner" }, null, -1),
168
- createBaseVNode("div", null, "加载中...", -1)
169
- ])])) : !selectedConnectionId.value ? (openBlock(), createElementBlock("div", _hoisted_6, [..._cache[4] || (_cache[4] = [
170
- createBaseVNode("div", { class: "empty-icon" }, "🗄️", -1),
171
- createBaseVNode("div", { class: "empty-title" }, "未选择连接", -1),
172
- createBaseVNode("div", { class: "empty-text" }, "请从下拉列表中选择一个数据库连接", -1)
173
- ])])) : (openBlock(), createElementBlock("div", _hoisted_7, [
174
- createBaseVNode("div", _hoisted_8, [
175
- (openBlock(), createElementBlock(Fragment, null, renderList(tabs, (tab) => {
176
- return createBaseVNode("button", {
177
- key: tab.id,
178
- class: normalizeClass(["tab", { active: currentTab.value === tab.id }]),
179
- onClick: ($event) => currentTab.value = tab.id
180
- }, toDisplayString(tab.name), 11, _hoisted_9);
181
- }), 64))
182
- ]),
183
- withDirectives(createBaseVNode("div", _hoisted_10, [
184
- _cache[6] || (_cache[6] = createBaseVNode("h3", { class: "section-title" }, "数据库概览", -1)),
185
- createBaseVNode("div", _hoisted_11, [
186
- (openBlock(true), createElementBlock(Fragment, null, renderList(databases.value, (db) => {
187
- return openBlock(), createElementBlock("div", {
188
- key: db.name,
189
- class: "database-card",
190
- onClick: ($event) => selectDatabase(db)
191
- }, [
192
- createBaseVNode("div", _hoisted_13, [
193
- _cache[5] || (_cache[5] = createBaseVNode("div", { class: "database-icon" }, "🗄️", -1)),
194
- createBaseVNode("div", _hoisted_14, toDisplayString(db.name), 1)
195
- ]),
196
- createBaseVNode("div", _hoisted_15, [
197
- createBaseVNode("span", _hoisted_16, "📊 " + toDisplayString(db.tables) + " 表", 1),
198
- createBaseVNode("span", _hoisted_17, "💾 " + toDisplayString(db.size), 1)
199
- ])
200
- ], 8, _hoisted_12);
201
- }), 128))
202
- ])
203
- ], 512), [
204
- [vShow, currentTab.value === "overview"]
205
- ]),
206
- withDirectives(createBaseVNode("div", _hoisted_18, [
207
- _cache[8] || (_cache[8] = createBaseVNode("h3", { class: "section-title" }, "数据库列表", -1)),
208
- createBaseVNode("div", _hoisted_19, [
209
- (openBlock(true), createElementBlock(Fragment, null, renderList(databases.value, (db) => {
210
- return openBlock(), createElementBlock("div", {
211
- key: db.name,
212
- class: "database-card",
213
- onClick: ($event) => selectDatabase(db)
214
- }, [
215
- createBaseVNode("div", _hoisted_21, [
216
- _cache[7] || (_cache[7] = createBaseVNode("div", { class: "database-icon" }, "🗄️", -1)),
217
- createBaseVNode("div", _hoisted_22, toDisplayString(db.name), 1)
218
- ]),
219
- createBaseVNode("div", _hoisted_23, [
220
- createBaseVNode("span", _hoisted_24, "📊 " + toDisplayString(db.tables) + " 表", 1),
221
- createBaseVNode("span", _hoisted_25, "💾 " + toDisplayString(db.size), 1)
222
- ])
223
- ], 8, _hoisted_20);
224
- }), 128))
225
- ])
226
- ], 512), [
227
- [vShow, currentTab.value === "databases"]
228
- ]),
229
- withDirectives(createBaseVNode("div", _hoisted_26, [
230
- _cache[9] || (_cache[9] = createBaseVNode("h3", { class: "section-title" }, "表列表", -1)),
231
- createBaseVNode("div", _hoisted_27, [
232
- (openBlock(true), createElementBlock(Fragment, null, renderList(tables.value, (table) => {
233
- return openBlock(), createElementBlock("div", {
234
- key: table.name,
235
- class: "table-item"
236
- }, [
237
- createBaseVNode("div", _hoisted_28, toDisplayString(table.type === "table" ? "📋" : "👁️"), 1),
238
- createBaseVNode("div", _hoisted_29, [
239
- createBaseVNode("div", _hoisted_30, toDisplayString(table.name), 1),
240
- table.comment ? (openBlock(), createElementBlock("div", _hoisted_31, toDisplayString(table.comment), 1)) : createCommentVNode("", true),
241
- table.rows !== null ? (openBlock(), createElementBlock("div", _hoisted_32, [
242
- createBaseVNode("span", null, toDisplayString(table.rows.toLocaleString()) + " 行", 1),
243
- createBaseVNode("span", null, toDisplayString(table.engine || ""), 1),
244
- createBaseVNode("span", null, toDisplayString(table.size || ""), 1)
245
- ])) : createCommentVNode("", true)
246
- ]),
247
- createBaseVNode("span", {
248
- class: normalizeClass(["table-type", table.type])
249
- }, toDisplayString(table.type === "table" ? "TABLE" : "VIEW"), 3),
250
- createBaseVNode("div", _hoisted_33, [
251
- createBaseVNode("button", {
252
- class: "action-btn",
253
- onClick: withModifiers(($event) => handleViewData(table), ["stop"])
254
- }, "数据", 8, _hoisted_34),
255
- createBaseVNode("button", {
256
- class: "action-btn",
257
- onClick: withModifiers(($event) => handleViewStructure(table), ["stop"])
258
- }, "结构", 8, _hoisted_35)
259
- ])
260
- ]);
261
- }), 128))
262
- ])
263
- ], 512), [
264
- [vShow, currentTab.value === "tables"]
265
- ])
266
- ]))
267
- ])
268
- ]);
269
- };
270
- }
271
- });
272
- const DatabasePanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-974a0a17"]]);
273
- const app = createApp(DatabasePanel);
274
- app.mount("#app");
275
- //# sourceMappingURL=database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.js","sources":["../../../../src/platform/vscode/components/DatabasePanel.vue","../../../../src/platform/vscode/entry/database.ts"],"sourcesContent":["<template>\r\n <div class=\"database-panel\">\r\n <div class=\"panel-header\">\r\n <h1 class=\"panel-title\">数据库管理</h1>\r\n <div class=\"panel-actions\">\r\n <button @click=\"handleAddConnection\" class=\"btn btn-secondary\">添加连接</button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"margin-bottom: 20px;\">\r\n <select v-model=\"selectedConnectionId\" class=\"connection-selector\" @change=\"handleConnectionChange\">\r\n <option value=\"\">选择数据库连接</option>\r\n <option v-for=\"conn in connections\" :key=\"conn.id\" :value=\"conn.id\">\r\n {{ conn.name }} ({{ conn.host }}:{{ conn.port }})\r\n </option>\r\n </select>\r\n </div>\r\n\r\n <div id=\"contentArea\">\r\n <div v-if=\"loading\" class=\"loading\">\r\n <div class=\"spinner\"></div>\r\n <div>加载中...</div>\r\n </div>\r\n <div v-else-if=\"!selectedConnectionId\" class=\"empty-state\">\r\n <div class=\"empty-icon\">🗄️</div>\r\n <div class=\"empty-title\">未选择连接</div>\r\n <div class=\"empty-text\">请从下拉列表中选择一个数据库连接</div>\r\n </div>\r\n <div v-else>\r\n <div class=\"tabs\">\r\n <button\r\n v-for=\"tab in tabs\"\r\n :key=\"tab.id\"\r\n :class=\"['tab', { active: currentTab === tab.id }]\"\r\n @click=\"currentTab = tab.id\"\r\n >\r\n {{ tab.name }}\r\n </button>\r\n </div>\r\n\r\n <div v-show=\"currentTab === 'overview'\" class=\"tab-content active\">\r\n <h3 class=\"section-title\">数据库概览</h3>\r\n <div class=\"database-grid\">\r\n <div\r\n v-for=\"db in databases\"\r\n :key=\"db.name\"\r\n class=\"database-card\"\r\n @click=\"selectDatabase(db)\"\r\n >\r\n <div class=\"database-header\">\r\n <div class=\"database-icon\">🗄️</div>\r\n <div class=\"database-name\">{{ db.name }}</div>\r\n </div>\r\n <div class=\"database-info\">\r\n <span class=\"database-stat\">📊 {{ db.tables }} 表</span>\r\n <span class=\"database-stat\">💾 {{ db.size }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-show=\"currentTab === 'databases'\" class=\"tab-content\">\r\n <h3 class=\"section-title\">数据库列表</h3>\r\n <div class=\"database-grid\">\r\n <div\r\n v-for=\"db in databases\"\r\n :key=\"db.name\"\r\n class=\"database-card\"\r\n @click=\"selectDatabase(db)\"\r\n >\r\n <div class=\"database-header\">\r\n <div class=\"database-icon\">🗄️</div>\r\n <div class=\"database-name\">{{ db.name }}</div>\r\n </div>\r\n <div class=\"database-info\">\r\n <span class=\"database-stat\">📊 {{ db.tables }} 表</span>\r\n <span class=\"database-stat\">💾 {{ db.size }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div v-show=\"currentTab === 'tables'\" class=\"tab-content\">\r\n <h3 class=\"section-title\">表列表</h3>\r\n <div class=\"table-list\">\r\n <div\r\n v-for=\"table in tables\"\r\n :key=\"table.name\"\r\n class=\"table-item\"\r\n >\r\n <div class=\"table-icon\">{{ table.type === 'table' ? '📋' : '👁️' }}</div>\r\n <div class=\"table-info\">\r\n <div class=\"table-name\">{{ table.name }}</div>\r\n <div v-if=\"table.comment\" class=\"table-comment\">{{ table.comment }}</div>\r\n <div v-if=\"table.rows !== null\" class=\"table-meta\">\r\n <span>{{ table.rows.toLocaleString() }} 行</span>\r\n <span>{{ table.engine || '' }}</span>\r\n <span>{{ table.size || '' }}</span>\r\n </div>\r\n </div>\r\n <span :class=\"['table-type', table.type]\">{{ table.type === 'table' ? 'TABLE' : 'VIEW' }}</span>\r\n <div class=\"table-actions\">\r\n <button class=\"action-btn\" @click.stop=\"handleViewData(table)\">数据</button>\r\n <button class=\"action-btn\" @click.stop=\"handleViewStructure(table)\">结构</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref, reactive, computed, onMounted } from 'vue';\r\nimport { getVSCodeBridge } from '../bridge';\r\n\r\nconst vscode = getVSCodeBridge();\r\n\r\nconst connections = ref<any[]>([]);\r\nconst selectedConnectionId = ref('');\r\nconst databases = ref<any[]>([]);\r\nconst tables = ref<any[]>([]);\r\nconst loading = ref(false);\r\nconst currentTab = ref('overview');\r\n\r\nconst selectedConnection = computed(() => {\r\n return connections.value.find(c => c.id === selectedConnectionId.value);\r\n});\r\n\r\nconst tabs = [\r\n { id: 'overview', name: '概览' },\r\n { id: 'databases', name: '数据库' },\r\n { id: 'tables', name: '表' }\r\n];\r\n\r\nonMounted(() => {\r\n // 请求连接列表\r\n vscode.postMessage({ command: 'getConnections' });\r\n\r\n // 监听来自扩展的消息\r\n vscode.onMessage((message: any) => {\r\n if (message.command === 'connections') {\r\n connections.value = message.data;\r\n } else if (message.command === 'selectConnection') {\r\n selectConnection(message.data);\r\n } else if (message.command === 'databases') {\r\n databases.value = message.data;\r\n loading.value = false;\r\n } else if (message.command === 'tables') {\r\n tables.value = message.data;\r\n loading.value = false;\r\n } else if (message.command === 'error') {\r\n handleError(message.data);\r\n }\r\n });\r\n});\r\n\r\nfunction handleAddConnection() {\r\n vscode.postMessage({ command: 'addConnection' });\r\n}\r\n\r\nfunction handleConnectionChange() {\r\n if (selectedConnectionId.value) {\r\n const connection = connections.value.find(c => c.id === selectedConnectionId.value);\r\n selectConnection(connection);\r\n } else {\r\n databases.value = [];\r\n tables.value = [];\r\n }\r\n}\r\n\r\nfunction selectConnection(connection: any) {\r\n if (!connection) return;\r\n\r\n selectedConnectionId.value = connection.id;\r\n loading.value = true;\r\n\r\n // 请求数据库列表\r\n vscode.postMessage({\r\n command: 'getDatabases',\r\n data: { connectionId: connection.id }\r\n });\r\n}\r\n\r\nfunction selectDatabase(database: any) {\r\n loading.value = true;\r\n currentTab.value = 'tables';\r\n\r\n // 请求表列表\r\n vscode.postMessage({\r\n command: 'getTables',\r\n data: {\r\n connectionId: selectedConnectionId.value,\r\n databaseName: database.name\r\n }\r\n });\r\n}\r\n\r\nfunction handleViewData(table: any) {\r\n vscode.postMessage({\r\n command: 'openTableData',\r\n data: {\r\n connectionId: selectedConnectionId.value,\r\n tableName: table.name\r\n }\r\n });\r\n}\r\n\r\nfunction handleViewStructure(table: any) {\r\n vscode.postMessage({\r\n command: 'openTableStructure',\r\n data: {\r\n connectionId: selectedConnectionId.value,\r\n tableName: table.name\r\n }\r\n });\r\n}\r\n\r\nfunction handleError(error: string) {\r\n loading.value = false;\r\n console.error('Error:', error);\r\n alert(`操作失败: ${error}`);\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.database-panel {\r\n padding: 16px;\r\n height: 100vh;\r\n overflow: auto;\r\n}\r\n\r\n.panel-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n padding-bottom: 16px;\r\n border-bottom: 1px solid var(--vscode-panel-border);\r\n}\r\n\r\n.panel-title {\r\n font-size: 18px;\r\n font-weight: 600;\r\n margin: 0;\r\n color: var(--vscode-foreground);\r\n}\r\n\r\n.panel-actions {\r\n display: flex;\r\n gap: 8px;\r\n}\r\n\r\n.connection-selector {\r\n width: 300px;\r\n padding: 6px 10px;\r\n border: 1px solid var(--vscode-input-border);\r\n background-color: var(--vscode-input-background);\r\n color: var(--vscode-input-foreground);\r\n border-radius: 4px;\r\n font-size: 13px;\r\n}\r\n\r\n.btn {\r\n padding: 6px 14px;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 13px;\r\n cursor: pointer;\r\n transition: background-color 0.2s;\r\n}\r\n\r\n.btn-primary {\r\n background-color: var(--vscode-button-background);\r\n color: var(--vscode-button-foreground);\r\n}\r\n\r\n.btn-primary:hover {\r\n background-color: var(--vscode-button-hoverBackground);\r\n}\r\n\r\n.btn-secondary {\r\n background-color: var(--vscode-button-secondaryBackground);\r\n color: var(--vscode-button-secondaryForeground);\r\n}\r\n\r\n.btn-secondary:hover {\r\n background-color: var(--vscode-button-secondaryHoverBackground);\r\n}\r\n\r\n.database-grid {\r\n display: grid;\r\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\r\n gap: 16px;\r\n}\r\n\r\n.database-card {\r\n padding: 16px;\r\n background-color: var(--vscode-editor-background);\r\n border: 1px solid var(--vscode-panel-border);\r\n border-radius: 8px;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n}\r\n\r\n.database-card:hover {\r\n border-color: var(--vscode-focusBorder);\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\r\n transform: translateY(-2px);\r\n}\r\n\r\n.database-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n margin-bottom: 12px;\r\n}\r\n\r\n.database-icon {\r\n font-size: 28px;\r\n color: var(--vscode-textLink-foreground);\r\n}\r\n\r\n.database-name {\r\n flex: 1;\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: var(--vscode-foreground);\r\n}\r\n\r\n.database-info {\r\n display: flex;\r\n gap: 16px;\r\n font-size: 12px;\r\n color: var(--vscode-descriptionForeground);\r\n}\r\n\r\n.database-stat {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n}\r\n\r\n.section-title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n margin: 24px 0 16px 0;\r\n padding-bottom: 8px;\r\n border-bottom: 1px solid var(--vscode-panel-border);\r\n color: var(--vscode-foreground);\r\n}\r\n\r\n.tabs {\r\n display: flex;\r\n gap: 4px;\r\n margin-bottom: 16px;\r\n border-bottom: 1px solid var(--vscode-panel-border);\r\n}\r\n\r\n.tab {\r\n padding: 8px 16px;\r\n border: none;\r\n background-color: transparent;\r\n color: var(--vscode-foreground);\r\n font-size: 13px;\r\n cursor: pointer;\r\n border-bottom: 2px solid transparent;\r\n transition: all 0.2s;\r\n}\r\n\r\n.tab:hover {\r\n background-color: var(--vscode-list-hoverBackground);\r\n}\r\n\r\n.tab.active {\r\n border-bottom-color: var(--vscode-focusBorder);\r\n color: var(--vscode-textLink-foreground);\r\n}\r\n\r\n.tab-content {\r\n display: none;\r\n}\r\n\r\n.tab-content.active {\r\n display: block;\r\n}\r\n\r\n.table-list {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n}\r\n\r\n.table-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n padding: 12px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n transition: background-color 0.2s;\r\n}\r\n\r\n.table-item:hover {\r\n background-color: var(--vscode-list-hoverBackground);\r\n}\r\n\r\n.table-icon {\r\n font-size: 20px;\r\n color: var(--vscode-textLink-foreground);\r\n width: 24px;\r\n text-align: center;\r\n}\r\n\r\n.table-info {\r\n flex: 1;\r\n}\r\n\r\n.table-name {\r\n font-size: 14px;\r\n font-weight: 500;\r\n margin-bottom: 2px;\r\n color: var(--vscode-foreground);\r\n}\r\n\r\n.table-comment {\r\n font-size: 12px;\r\n color: var(--vscode-descriptionForeground);\r\n}\r\n\r\n.table-meta {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n font-size: 12px;\r\n color: var(--vscode-descriptionForeground);\r\n margin-top: 4px;\r\n}\r\n\r\n.table-type {\r\n padding: 2px 8px;\r\n border-radius: 12px;\r\n background-color: var(--vscode-badge-background);\r\n font-weight: 500;\r\n font-size: 12px;\r\n}\r\n\r\n.table-type.table {\r\n background-color: var(--vscode-badge-background);\r\n}\r\n\r\n.table-type.view {\r\n background-color: var(--vscode-gitDecorationModifiedResourceForeground);\r\n color: white;\r\n}\r\n\r\n.table-actions {\r\n display: flex;\r\n gap: 8px;\r\n opacity: 0;\r\n transition: opacity 0.2s;\r\n}\r\n\r\n.table-item:hover .table-actions {\r\n opacity: 1;\r\n}\r\n\r\n.action-btn {\r\n padding: 4px 8px;\r\n font-size: 12px;\r\n background-color: var(--vscode-button-secondaryBackground);\r\n color: var(--vscode-button-secondaryForeground);\r\n border: none;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n}\r\n\r\n.action-btn:hover {\r\n background-color: var(--vscode-button-secondaryHoverBackground);\r\n}\r\n\r\n.empty-state {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 80px 20px;\r\n text-align: center;\r\n}\r\n\r\n.empty-icon {\r\n font-size: 64px;\r\n margin-bottom: 16px;\r\n opacity: 0.3;\r\n}\r\n\r\n.empty-title {\r\n font-size: 16px;\r\n font-weight: 600;\r\n margin-bottom: 8px;\r\n color: var(--vscode-foreground);\r\n}\r\n\r\n.empty-text {\r\n font-size: 14px;\r\n color: var(--vscode-descriptionForeground);\r\n}\r\n\r\n.loading {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 40px;\r\n}\r\n\r\n.spinner {\r\n width: 32px;\r\n height: 32px;\r\n border: 3px solid var(--vscode-progressBar-background);\r\n border-top-color: var(--vscode-progressBar-foreground);\r\n border-radius: 50%;\r\n animation: spin 0.6s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n</style>\r\n","/**\r\n * VSCode WebView - Database Entry Point\r\n * 数据库管理面板入口\r\n */\r\n\r\nimport { createApp } from 'vue';\r\nimport DatabasePanel from '../components/DatabasePanel.vue';\r\n\r\n// 创建 Vue 应用\r\nconst app = createApp(DatabasePanel);\r\n\r\n// 挂载\r\napp.mount('#app');\r\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_toDisplayString","_normalizeClass","_withDirectives","_withModifiers"],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- {% include "./modules/header.tpl" %}
4
- <body>
5
- <div id="app" class="min-vh-100"></div>
6
- <script type="module" lang="ts" src="{{prefix}}/src/platform/index.ts">
7
- </script>
8
- </body>
9
- </html>
@@ -1,14 +0,0 @@
1
- <head>
2
- <meta charset="UTF-8" />
3
- <base href="{{viteTarget}}" />
4
- {% include "./initial_state.tpl" %}
5
- <link rel="icon" href="{{prefix}}/public/favicon.png" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>数据库管理</title>
8
- <meta name="description" content="{{description}}">
9
- <script>
10
- window.addEventListener('vite:preloadError', function (event) {
11
- console.error(event);
12
- });
13
- </script>
14
- </head>
@@ -1,55 +0,0 @@
1
- <script type="text/template" id="__INITIAL_STATE__">
2
- {{ data | dump | safe }}
3
- </script>
4
- <script type="text/template" id="__DEFAULTINITIAL_STATE__">
5
- {{ __DEFAULTINITIAL_STATE__ }}
6
- </script>
7
- <script>
8
- function __get_templateJson(id) {
9
- try {
10
- var tag = document.getElementById(id);
11
- var obj = JSON.parse(tag.innerHTML);
12
- return obj;
13
- }
14
- catch (e) {
15
- return null;
16
- }
17
- }
18
- var __INITIAL_STATE__ = __get_templateJson('__INITIAL_STATE__');
19
- if(!__INITIAL_STATE__) __INITIAL_STATE__ = __get_templateJson('__DEFAULTINITIAL_STATE__');
20
- // 动态加载入口
21
- function __vitejs_load_entry(url, type) {
22
- if(!url) return;
23
- if(url.indexOf('/') !== 0) url = '/' + url;
24
- var prefix = (window.__INITIAL_STATE__ && window.__INITIAL_STATE__.config && window.__INITIAL_STATE__.config.prefix) || '';
25
- if(prefix && url.indexOf(prefix) !== 0) {
26
- url = prefix + url;
27
- }
28
- var nodeObj;
29
- switch(type) {
30
- case 'script': {
31
- // 检查是否已加载过
32
- var existing = document.querySelector(`script[src="${url}"]`);
33
- if(existing) return;
34
- nodeObj = document.createElement('script');
35
- nodeObj.src = url;
36
- nodeObj.type = 'module';
37
- break;
38
- }
39
- case 'stylesheet':
40
- case 'modulepreload':
41
- case 'icon': {
42
- // 检查是否已加载过
43
- var existing = document.querySelector(`link[href="${url}"]`);
44
- if(existing) return;
45
- nodeObj = document.createElement('link');
46
- nodeObj.href = url;
47
- nodeObj.rel = type;
48
- break;
49
- }
50
- }
51
- if(!nodeObj) return;
52
- nodeObj.crossOrigin = 'crossorigin';
53
- document.head.appendChild(nodeObj);
54
- }
55
- </script>
@@ -1,162 +0,0 @@
1
-
2
- .query-panel[data-v-eaf4025e] {
3
- display: flex;
4
- flex-direction: column;
5
- height: 100vh;
6
- overflow: hidden;
7
- }
8
- .query-toolbar[data-v-eaf4025e] {
9
- display: flex;
10
- align-items: center;
11
- gap: 12px;
12
- padding: 12px;
13
- background-color: var(--vscode-editorGroupHeader-tabsBackground);
14
- border-bottom: 1px solid var(--vscode-panel-border);
15
- }
16
- .query-selector[data-v-eaf4025e] {
17
- min-width: 200px;
18
- padding: 6px 10px;
19
- border: 1px solid var(--vscode-input-border);
20
- background-color: var(--vscode-input-background);
21
- color: var(--vscode-input-foreground);
22
- border-radius: 4px;
23
- }
24
- .btn[data-v-eaf4025e] {
25
- padding: 6px 14px;
26
- border: none;
27
- border-radius: 4px;
28
- font-size: 13px;
29
- cursor: pointer;
30
- transition: background-color 0.2s;
31
- }
32
- .btn-primary[data-v-eaf4025e] {
33
- background-color: var(--vscode-button-background);
34
- color: var(--vscode-button-foreground);
35
- }
36
- .btn-primary[data-v-eaf4025e]:hover {
37
- background-color: var(--vscode-button-hoverBackground);
38
- }
39
- .btn-secondary[data-v-eaf4025e] {
40
- background-color: var(--vscode-button-secondaryBackground);
41
- color: var(--vscode-button-secondaryForeground);
42
- }
43
- .btn-secondary[data-v-eaf4025e]:hover {
44
- background-color: var(--vscode-button-secondaryHoverBackground);
45
- }
46
- .query-editor[data-v-eaf4025e] {
47
- flex: 1;
48
- display: flex;
49
- flex-direction: column;
50
- border-bottom: 1px solid var(--vscode-panel-border);
51
- min-height: 200px;
52
- }
53
- .query-textarea[data-v-eaf4025e] {
54
- flex: 1;
55
- padding: 16px;
56
- font-family: var(--vscode-editor-font-family, 'Consolas', 'Monaco', monospace);
57
- font-size: 14px;
58
- line-height: 1.6;
59
- border: none;
60
- resize: none;
61
- background-color: var(--vscode-editor-background);
62
- color: var(--vscode-editor-foreground);
63
- }
64
- .query-textarea[data-v-eaf4025e]:focus {
65
- outline: none;
66
- }
67
- .query-results[data-v-eaf4025e] {
68
- flex: 1;
69
- overflow: auto;
70
- padding: 12px;
71
- }
72
- .loading-state[data-v-eaf4025e] {
73
- display: flex;
74
- align-items: center;
75
- justify-content: center;
76
- padding: 40px;
77
- gap: 12px;
78
- }
79
- .spinner[data-v-eaf4025e] {
80
- width: 20px;
81
- height: 20px;
82
- border: 2px solid var(--vscode-progressBar-background);
83
- border-top-color: var(--vscode-progressBar-foreground);
84
- border-radius: 50%;
85
- animation: spin-eaf4025e 0.6s linear infinite;
86
- }
87
- @keyframes spin-eaf4025e {
88
- to {
89
- transform: rotate(360deg);
90
- }
91
- }
92
- .results-header[data-v-eaf4025e] {
93
- display: flex;
94
- justify-content: space-between;
95
- align-items: center;
96
- margin-bottom: 12px;
97
- padding: 8px 12px;
98
- background-color: var(--vscode-editorGroupHeader-tabsBackground);
99
- border-radius: 4px;
100
- }
101
- .results-title[data-v-eaf4025e] {
102
- font-size: 14px;
103
- font-weight: 600;
104
- }
105
- .results-meta[data-v-eaf4025e] {
106
- font-size: 12px;
107
- color: var(--vscode-descriptionForeground);
108
- }
109
- .data-table[data-v-eaf4025e] {
110
- width: 100%;
111
- border-collapse: collapse;
112
- font-size: 13px;
113
- }
114
- .data-table th[data-v-eaf4025e],
115
- .data-table td[data-v-eaf4025e] {
116
- padding: 8px 12px;
117
- text-align: left;
118
- border-bottom: 1px solid var(--vscode-panel-border);
119
- }
120
- .data-table th[data-v-eaf4025e] {
121
- background-color: var(--vscode-editorGroupHeader-tabsBackground);
122
- font-weight: 600;
123
- position: sticky;
124
- top: 0;
125
- }
126
- .data-table tbody tr[data-v-eaf4025e]:hover {
127
- background-color: var(--vscode-list-hoverBackground);
128
- }
129
- .empty-state[data-v-eaf4025e] {
130
- display: flex;
131
- flex-direction: column;
132
- align-items: center;
133
- justify-content: center;
134
- padding: 60px 20px;
135
- text-align: center;
136
- }
137
- .empty-icon[data-v-eaf4025e] {
138
- font-size: 48px;
139
- margin-bottom: 16px;
140
- opacity: 0.5;
141
- }
142
- .empty-text[data-v-eaf4025e] {
143
- font-size: 14px;
144
- color: var(--vscode-descriptionForeground);
145
- }
146
- .status-bar[data-v-eaf4025e] {
147
- display: flex;
148
- justify-content: space-between;
149
- align-items: center;
150
- padding: 8px 12px;
151
- background-color: var(--vscode-statusBar-background);
152
- color: var(--vscode-statusBar-foreground);
153
- font-size: 12px;
154
- }
155
- .status-item[data-v-eaf4025e] {
156
- display: flex;
157
- align-items: center;
158
- gap: 8px;
159
- }
160
- .status-icon[data-v-eaf4025e] {
161
- color: var(--vscode-textLink-foreground);
162
- }