fdb2 1.0.6 → 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 (192) hide show
  1. package/.vscodeignore +45 -0
  2. package/README.md +24 -85
  3. package/dist/package.json +115 -0
  4. package/dist/pnpm-lock.yaml +7447 -0
  5. package/dist/public/explorer.css +244 -111
  6. package/dist/public/explorer.js +518 -275
  7. package/dist/scripts/preinstall.js +112 -0
  8. package/dist/server/index.d.ts.map +1 -1
  9. package/dist/server/index.js +4 -9
  10. package/dist/server/index.js.map +1 -1
  11. package/dist/server/index.ts +5 -10
  12. package/dist/server/service/connection.service.d.ts.map +1 -1
  13. package/dist/server/service/connection.service.js +1 -0
  14. package/dist/server/service/connection.service.js.map +1 -1
  15. package/dist/server/service/connection.service.ts +1 -0
  16. package/dist/server/service/database/base.service.d.ts +4 -0
  17. package/dist/server/service/database/base.service.d.ts.map +1 -1
  18. package/dist/server/service/database/base.service.js +3 -3
  19. package/dist/server/service/database/base.service.js.map +1 -1
  20. package/dist/server/service/database/base.service.ts +8 -3
  21. package/dist/server/service/database/cockroachdb.service.d.ts +5 -0
  22. package/dist/server/service/database/cockroachdb.service.d.ts.map +1 -1
  23. package/dist/server/service/database/cockroachdb.service.js +112 -0
  24. package/dist/server/service/database/cockroachdb.service.js.map +1 -1
  25. package/dist/server/service/database/cockroachdb.service.ts +123 -0
  26. package/dist/server/service/database/database.service.d.ts +4 -0
  27. package/dist/server/service/database/database.service.d.ts.map +1 -1
  28. package/dist/server/service/database/database.service.js +8 -0
  29. package/dist/server/service/database/database.service.js.map +1 -1
  30. package/dist/server/service/database/database.service.ts +9 -0
  31. package/dist/server/service/database/mongodb.service.d.ts +6 -0
  32. package/dist/server/service/database/mongodb.service.d.ts.map +1 -1
  33. package/dist/server/service/database/mongodb.service.js +8 -0
  34. package/dist/server/service/database/mongodb.service.js.map +1 -1
  35. package/dist/server/service/database/mongodb.service.ts +9 -0
  36. package/dist/server/service/database/mssql.service.d.ts +4 -0
  37. package/dist/server/service/database/mssql.service.d.ts.map +1 -1
  38. package/dist/server/service/database/mssql.service.js +105 -0
  39. package/dist/server/service/database/mssql.service.js.map +1 -1
  40. package/dist/server/service/database/mssql.service.ts +118 -0
  41. package/dist/server/service/database/mysql.service.d.ts +4 -0
  42. package/dist/server/service/database/mysql.service.d.ts.map +1 -1
  43. package/dist/server/service/database/mysql.service.js +116 -0
  44. package/dist/server/service/database/mysql.service.js.map +1 -1
  45. package/dist/server/service/database/mysql.service.ts +130 -0
  46. package/dist/server/service/database/oracle.service.d.ts +4 -0
  47. package/dist/server/service/database/oracle.service.d.ts.map +1 -1
  48. package/dist/server/service/database/oracle.service.js +114 -0
  49. package/dist/server/service/database/oracle.service.js.map +1 -1
  50. package/dist/server/service/database/oracle.service.ts +128 -0
  51. package/dist/server/service/database/postgres.service.d.ts +4 -0
  52. package/dist/server/service/database/postgres.service.d.ts.map +1 -1
  53. package/dist/server/service/database/postgres.service.js +120 -0
  54. package/dist/server/service/database/postgres.service.js.map +1 -1
  55. package/dist/server/service/database/postgres.service.ts +131 -0
  56. package/dist/server/service/database/sap.service.d.ts +4 -0
  57. package/dist/server/service/database/sap.service.d.ts.map +1 -1
  58. package/dist/server/service/database/sap.service.js +107 -0
  59. package/dist/server/service/database/sap.service.js.map +1 -1
  60. package/dist/server/service/database/sap.service.ts +120 -0
  61. package/dist/server/service/database/sqlite.service.d.ts +5 -0
  62. package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
  63. package/dist/server/service/database/sqlite.service.js +133 -0
  64. package/dist/server/service/database/sqlite.service.js.map +1 -1
  65. package/dist/server/service/database/sqlite.service.ts +150 -0
  66. package/package.json +18 -9
  67. package/packages/vscode/.vscodeignore +44 -0
  68. package/packages/vscode/README.md +62 -0
  69. package/packages/vscode/out/database-services/base.service.js +236 -0
  70. package/packages/vscode/out/database-services/base.service.js.map +1 -0
  71. package/packages/vscode/out/database-services/cockroachdb.service.js +634 -0
  72. package/packages/vscode/out/database-services/cockroachdb.service.js.map +1 -0
  73. package/packages/vscode/out/database-services/connection.service.js +346 -0
  74. package/packages/vscode/out/database-services/connection.service.js.map +1 -0
  75. package/packages/vscode/out/database-services/database.service.js +571 -0
  76. package/packages/vscode/out/database-services/database.service.js.map +1 -0
  77. package/packages/vscode/out/database-services/index.js +18 -0
  78. package/packages/vscode/out/database-services/index.js.map +1 -0
  79. package/packages/vscode/out/database-services/model/connection.entity.js +11 -0
  80. package/packages/vscode/out/database-services/model/connection.entity.js.map +1 -0
  81. package/packages/vscode/out/database-services/model/database.entity.js +35 -0
  82. package/packages/vscode/out/database-services/model/database.entity.js.map +1 -0
  83. package/packages/vscode/out/database-services/mongodb.service.js +458 -0
  84. package/packages/vscode/out/database-services/mongodb.service.js.map +1 -0
  85. package/packages/vscode/out/database-services/mssql.service.js +694 -0
  86. package/packages/vscode/out/database-services/mssql.service.js.map +1 -0
  87. package/packages/vscode/out/database-services/mysql.service.js +735 -0
  88. package/packages/vscode/out/database-services/mysql.service.js.map +1 -0
  89. package/packages/vscode/out/database-services/oracle.service.js +787 -0
  90. package/packages/vscode/out/database-services/oracle.service.js.map +1 -0
  91. package/packages/vscode/out/database-services/postgres.service.js +696 -0
  92. package/packages/vscode/out/database-services/postgres.service.js.map +1 -0
  93. package/packages/vscode/out/database-services/sap.service.js +695 -0
  94. package/packages/vscode/out/database-services/sap.service.js.map +1 -0
  95. package/packages/vscode/out/database-services/sqlite.service.js +532 -0
  96. package/packages/vscode/out/database-services/sqlite.service.js.map +1 -0
  97. package/packages/vscode/out/extension.js +93 -0
  98. package/packages/vscode/out/extension.js.map +1 -0
  99. package/packages/vscode/out/provider/DatabaseTreeProvider.js +159 -0
  100. package/packages/vscode/out/provider/DatabaseTreeProvider.js.map +1 -0
  101. package/packages/vscode/out/provider/WebViewProvider.js +259 -0
  102. package/packages/vscode/out/provider/WebViewProvider.js.map +1 -0
  103. package/packages/vscode/out/service/ConnectionManager.js +105 -0
  104. package/packages/vscode/out/service/ConnectionManager.js.map +1 -0
  105. package/packages/vscode/out/service/DatabaseServiceBridge.js +395 -0
  106. package/packages/vscode/out/service/DatabaseServiceBridge.js.map +1 -0
  107. package/packages/vscode/out/typings/connection.js +3 -0
  108. package/packages/vscode/out/typings/connection.js.map +1 -0
  109. package/packages/vscode/package.json +142 -0
  110. package/packages/vscode/resources/icon.svg +5 -0
  111. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js +6529 -0
  112. package/packages/vscode/resources/webview/_plugin-vue_export-helper.js.map +1 -0
  113. package/packages/vscode/resources/webview/connection.css +69 -0
  114. package/packages/vscode/resources/webview/connection.js +228 -0
  115. package/packages/vscode/resources/webview/connection.js.map +1 -0
  116. package/packages/vscode/resources/webview/database.css +259 -0
  117. package/packages/vscode/resources/webview/database.js +275 -0
  118. package/packages/vscode/resources/webview/database.js.map +1 -0
  119. package/packages/vscode/resources/webview/favicon.ico +0 -0
  120. package/packages/vscode/resources/webview/index.html +9 -0
  121. package/packages/vscode/resources/webview/modules/header.tpl +14 -0
  122. package/packages/vscode/resources/webview/modules/initial_state.tpl +55 -0
  123. package/packages/vscode/resources/webview/query.css +162 -0
  124. package/packages/vscode/resources/webview/query.js +198 -0
  125. package/packages/vscode/resources/webview/query.js.map +1 -0
  126. package/packages/vscode/src/database-services/base.service.js.map +1 -0
  127. package/packages/vscode/src/database-services/base.service.ts +363 -0
  128. package/packages/vscode/src/database-services/cockroachdb.service.js.map +1 -0
  129. package/packages/vscode/src/database-services/cockroachdb.service.ts +659 -0
  130. package/packages/vscode/src/database-services/connection.service.ts +341 -0
  131. package/packages/vscode/src/database-services/database.service.ts +630 -0
  132. package/packages/vscode/src/database-services/index.ts +7 -0
  133. package/packages/vscode/src/database-services/model/connection.entity.js +11 -0
  134. package/packages/vscode/src/database-services/model/connection.entity.js.map +1 -0
  135. package/packages/vscode/src/database-services/model/connection.entity.ts +66 -0
  136. package/packages/vscode/src/database-services/model/database.entity.js +35 -0
  137. package/packages/vscode/src/database-services/model/database.entity.js.map +1 -0
  138. package/packages/vscode/src/database-services/model/database.entity.ts +246 -0
  139. package/packages/vscode/src/database-services/mongodb.service.js.map +1 -0
  140. package/packages/vscode/src/database-services/mongodb.service.ts +454 -0
  141. package/packages/vscode/src/database-services/mssql.service.js.map +1 -0
  142. package/packages/vscode/src/database-services/mssql.service.ts +723 -0
  143. package/packages/vscode/src/database-services/mysql.service.js.map +1 -0
  144. package/packages/vscode/src/database-services/mysql.service.ts +761 -0
  145. package/packages/vscode/src/database-services/oracle.service.js.map +1 -0
  146. package/packages/vscode/src/database-services/oracle.service.ts +832 -0
  147. package/packages/vscode/src/database-services/postgres.service.js.map +1 -0
  148. package/packages/vscode/src/database-services/postgres.service.ts +741 -0
  149. package/packages/vscode/src/database-services/sap.service.js.map +1 -0
  150. package/packages/vscode/src/database-services/sap.service.ts +713 -0
  151. package/packages/vscode/src/database-services/sqlite.service.js.map +1 -0
  152. package/packages/vscode/src/database-services/sqlite.service.ts +559 -0
  153. package/packages/vscode/src/extension.ts +76 -0
  154. package/packages/vscode/src/provider/DatabaseTreeProvider.ts +167 -0
  155. package/packages/vscode/src/provider/WebViewProvider.ts +277 -0
  156. package/packages/vscode/src/service/DatabaseServiceBridge.ts +414 -0
  157. package/packages/vscode/src/typings/connection.ts +90 -0
  158. package/packages/vscode/tsconfig.json +21 -0
  159. package/public/fdb2.png +0 -0
  160. package/server/backups/db_ai_breakout_2026-03-11T08-38-48-677Z.sql +0 -0
  161. package/server/index.ts +5 -10
  162. package/server/model/connection.entity.js +11 -0
  163. package/server/model/connection.entity.js.map +1 -0
  164. package/server/model/database.entity.js +35 -0
  165. package/server/model/database.entity.js.map +1 -0
  166. package/server/service/connection.service.ts +1 -0
  167. package/server/service/database/base.service.ts +8 -3
  168. package/server/service/database/cockroachdb.service.ts +123 -0
  169. package/server/service/database/database.service.ts +9 -0
  170. package/server/service/database/mongodb.service.ts +9 -0
  171. package/server/service/database/mssql.service.ts +118 -0
  172. package/server/service/database/mysql.service.ts +130 -0
  173. package/server/service/database/oracle.service.ts +128 -0
  174. package/server/service/database/postgres.service.ts +131 -0
  175. package/server/service/database/sap.service.ts +120 -0
  176. package/server/service/database/sqlite.service.ts +150 -0
  177. package/server/tsconfig.json +20 -0
  178. package/src/components/connection-editor/index.vue +0 -1
  179. package/src/platform/database/components/db-tools.vue +414 -174
  180. package/src/platform/database/components/table-detail.vue +1 -0
  181. package/src/platform/database/components/table-editor.vue +245 -18
  182. package/src/platform/vscode/bridge.ts +121 -0
  183. package/src/platform/vscode/components/ConnectionPanel.vue +272 -0
  184. package/src/platform/vscode/components/DatabasePanel.vue +532 -0
  185. package/src/platform/vscode/components/QueryPanel.vue +371 -0
  186. package/src/platform/vscode/entry/connection.ts +13 -0
  187. package/src/platform/vscode/entry/database.ts +13 -0
  188. package/src/platform/vscode/entry/query.ts +13 -0
  189. package/src/platform/vscode/index.ts +5 -0
  190. package/src/service/database.ts +2 -6
  191. package/vite.config.ts +46 -6
  192. package/vite.config.vscode.ts +47 -0
@@ -1,19 +1,19 @@
1
1
 
2
2
  /* 继承原有的样式,这里可以添加组件特定的样式 */
3
- .connection-form-modern[data-v-093594aa] {
3
+ .connection-form-modern[data-v-144c6980] {
4
4
  padding: 0;
5
5
  }
6
- .form-section[data-v-093594aa] {
6
+ .form-section[data-v-144c6980] {
7
7
  margin-bottom: 2rem;
8
8
  }
9
- .section-header[data-v-093594aa] {
9
+ .section-header[data-v-144c6980] {
10
10
  display: flex;
11
11
  align-items: center;
12
12
  margin-bottom: 1.5rem;
13
13
  padding-bottom: 0.75rem;
14
14
  border-bottom: 2px solid #f0f0f0;
15
15
  }
16
- .section-icon[data-v-093594aa] {
16
+ .section-icon[data-v-144c6980] {
17
17
  width: 40px;
18
18
  height: 40px;
19
19
  border-radius: 8px;
@@ -24,24 +24,24 @@
24
24
  color: white;
25
25
  margin-right: 1rem;
26
26
  }
27
- .section-title[data-v-093594aa] {
27
+ .section-title[data-v-144c6980] {
28
28
  font-size: 1.1rem;
29
29
  font-weight: 600;
30
30
  margin: 0;
31
31
  color: #333;
32
32
  }
33
- .section-content[data-v-093594aa] {
33
+ .section-content[data-v-144c6980] {
34
34
  padding-left: 56px;
35
35
  }
36
- .form-grid[data-v-093594aa] {
36
+ .form-grid[data-v-144c6980] {
37
37
  display: grid;
38
38
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
39
39
  gap: 1.5rem;
40
40
  }
41
- .form-group-modern[data-v-093594aa] {
41
+ .form-group-modern[data-v-144c6980] {
42
42
  margin-bottom: 1rem;
43
43
  }
44
- .form-label-modern[data-v-093594aa] {
44
+ .form-label-modern[data-v-144c6980] {
45
45
  display: flex;
46
46
  align-items: center;
47
47
  font-weight: 500;
@@ -49,8 +49,8 @@
49
49
  margin-bottom: 0.5rem;
50
50
  font-size: 0.9rem;
51
51
  }
52
- .form-control-modern[data-v-093594aa],
53
- .form-select-modern[data-v-093594aa] {
52
+ .form-control-modern[data-v-144c6980],
53
+ .form-select-modern[data-v-144c6980] {
54
54
  width: 100%;
55
55
  padding: 0.75rem;
56
56
  border: 2px solid #e9ecef;
@@ -58,46 +58,46 @@
58
58
  font-size: 0.95rem;
59
59
  transition: all 0.3s ease;
60
60
  }
61
- .form-control-modern[data-v-093594aa]:focus,
62
- .form-select-modern[data-v-093594aa]:focus {
61
+ .form-control-modern[data-v-144c6980]:focus,
62
+ .form-select-modern[data-v-144c6980]:focus {
63
63
  outline: none;
64
64
  border-color: #667eea;
65
65
  box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
66
66
  }
67
- .form-check-modern[data-v-093594aa] {
67
+ .form-check-modern[data-v-144c6980] {
68
68
  display: flex;
69
69
  align-items: flex-start;
70
70
  padding: 0;
71
71
  }
72
- .form-check-input-modern[data-v-093594aa] {
72
+ .form-check-input-modern[data-v-144c6980] {
73
73
  margin-right: 0.75rem;
74
74
  margin-top: 0.25rem;
75
75
  }
76
- .form-check-label-modern[data-v-093594aa] {
76
+ .form-check-label-modern[data-v-144c6980] {
77
77
  display: flex;
78
78
  flex-direction: column;
79
79
  cursor: pointer;
80
80
  }
81
- .check-text[data-v-093594aa] {
81
+ .check-text[data-v-144c6980] {
82
82
  font-weight: 500;
83
83
  color: #333;
84
84
  margin-bottom: 0.25rem;
85
85
  }
86
- .check-description[data-v-093594aa] {
86
+ .check-description[data-v-144c6980] {
87
87
  font-size: 0.85rem;
88
88
  color: #666;
89
89
  }
90
- .required[data-v-093594aa] {
90
+ .required[data-v-144c6980] {
91
91
  color: #dc3545;
92
92
  margin-left: 0.25rem;
93
93
  }
94
- .error-content[data-v-093594aa] {
94
+ .error-content[data-v-144c6980] {
95
95
  display: flex;
96
96
  align-items: center;
97
97
  padding: 1.5rem;
98
98
  gap: 1rem;
99
99
  }
100
- .error-icon[data-v-093594aa] {
100
+ .error-icon[data-v-144c6980] {
101
101
  width: 48px;
102
102
  height: 48px;
103
103
  border-radius: 50%;
@@ -109,7 +109,7 @@
109
109
  font-size: 1.5rem;
110
110
  flex-shrink: 0;
111
111
  }
112
- .error-message[data-v-093594aa] {
112
+ .error-message[data-v-144c6980] {
113
113
  flex: 1;
114
114
  color: #333;
115
115
  font-size: 0.95rem;
@@ -774,71 +774,71 @@ to {
774
774
  }
775
775
  }
776
776
 
777
- .section-title[data-v-081084ef] {
777
+ .section-title[data-v-dcd325b0] {
778
778
  color: #495057;
779
779
  font-weight: 600;
780
780
  border-bottom: 2px solid #e9ecef;
781
781
  padding-bottom: 0.5rem;
782
782
  margin-bottom: 1rem;
783
783
  }
784
- .sql-preview[data-v-081084ef] {
784
+ .sql-preview[data-v-dcd325b0] {
785
785
  font-family: 'Courier New', monospace;
786
786
  font-size: 0.875rem;
787
787
  max-height: 200px;
788
788
  overflow-y: auto;
789
789
  border: 1px solid #dee2e6;
790
790
  }
791
- .table th[data-v-081084ef] {
791
+ .table th[data-v-dcd325b0] {
792
792
  font-size: 0.875rem;
793
793
  font-weight: 600;
794
794
  }
795
- .table td[data-v-081084ef] {
795
+ .table td[data-v-dcd325b0] {
796
796
  padding: 0!important;
797
797
  }
798
- .table .form-control[data-v-081084ef], .table .form-select[data-v-081084ef] {
798
+ .table .form-control[data-v-dcd325b0], .table .form-select[data-v-dcd325b0] {
799
799
  border: none;
800
800
  border-radius: 0;
801
801
  box-shadow: none;
802
802
  }
803
- .form-control-sm[data-v-081084ef], .form-select-sm[data-v-081084ef] {
803
+ .form-control-sm[data-v-dcd325b0], .form-select-sm[data-v-dcd325b0] {
804
804
  font-size: 0.875rem;
805
805
  }
806
- .modal-content[data-v-081084ef] {
806
+ .modal-content[data-v-dcd325b0] {
807
807
  max-height: 90vh;
808
808
  overflow-y: auto;
809
809
  }
810
- .modal-body[data-v-081084ef] {
810
+ .modal-body[data-v-dcd325b0] {
811
811
  max-height: calc(90vh - 120px);
812
812
  overflow-y: auto;
813
813
  }
814
- .input-group-sm .form-control[data-v-081084ef] {
814
+ .input-group-sm .form-control[data-v-dcd325b0] {
815
815
  border-radius: 0;
816
816
  }
817
- .input-group-sm .form-control[data-v-081084ef]:first-child {
817
+ .input-group-sm .form-control[data-v-dcd325b0]:first-child {
818
818
  border-top-left-radius: 0.25rem;
819
819
  border-bottom-left-radius: 0.25rem;
820
820
  }
821
- .input-group-sm .form-control[data-v-081084ef]:last-child {
821
+ .input-group-sm .form-control[data-v-dcd325b0]:last-child {
822
822
  border-top-right-radius: 0.25rem;
823
823
  border-bottom-right-radius: 0.25rem;
824
824
  }
825
- .text-muted[data-v-081084ef] {
825
+ .text-muted[data-v-dcd325b0] {
826
826
  color: #6c757d !important;
827
827
  }
828
828
 
829
- .db-tools[data-v-94a9d8f2] {
829
+ .db-tools[data-v-b1c1e4d6] {
830
830
  background: white;
831
831
  border-radius: 12px;
832
832
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
833
833
  overflow: hidden;
834
834
  }
835
- .tools-header[data-v-94a9d8f2] {
835
+ .tools-header[data-v-b1c1e4d6] {
836
836
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
837
837
  color: white;
838
838
  padding: 1rem 1.5rem;
839
839
  border-bottom: 1px solid #e2e8f0;
840
840
  }
841
- .tools-title[data-v-94a9d8f2] {
841
+ .tools-title[data-v-b1c1e4d6] {
842
842
  margin: 0;
843
843
  font-size: 1.1rem;
844
844
  font-weight: 600;
@@ -846,15 +846,15 @@ to {
846
846
  align-items: center;
847
847
  gap: 0.5rem;
848
848
  }
849
- .tools-content[data-v-94a9d8f2] {
849
+ .tools-content[data-v-b1c1e4d6] {
850
850
  padding: 1.5rem;
851
851
  max-height: 500px;
852
852
  overflow-y: auto;
853
853
  }
854
- .tool-section[data-v-94a9d8f2] {
854
+ .tool-section[data-v-b1c1e4d6] {
855
855
  margin-bottom: 2rem;
856
856
  }
857
- .section-title[data-v-94a9d8f2] {
857
+ .section-title[data-v-b1c1e4d6] {
858
858
  font-size: 0.9rem;
859
859
  font-weight: 600;
860
860
  color: #374151;
@@ -863,58 +863,191 @@ to {
863
863
  align-items: center;
864
864
  gap: 0.5rem;
865
865
  }
866
- .tool-actions[data-v-94a9d8f2] {
866
+ .tool-actions[data-v-b1c1e4d6] {
867
867
  display: flex;
868
868
  flex-wrap: wrap;
869
869
  gap: 0.5rem;
870
870
  }
871
- .tool-actions .btn[data-v-94a9d8f2] {
871
+ .tool-actions .btn[data-v-b1c1e4d6] {
872
872
  min-width: 120px;
873
873
  display: flex;
874
874
  align-items: center;
875
875
  gap: 0.5rem;
876
876
  }
877
- .health-results[data-v-94a9d8f2] {
878
- max-height: 400px;
879
- overflow-y: auto;
877
+ .modal[data-v-b1c1e4d6] {
878
+ background-color: rgba(0, 0, 0, 0.5);
879
+ }
880
+ .modal-dialog[data-v-b1c1e4d6] {
881
+ max-width: 600px;
882
+ }
883
+ .modal-header[data-v-b1c1e4d6] {
884
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
885
+ border-bottom: 1px solid #e2e8f0;
886
+ }
887
+ .modal-title[data-v-b1c1e4d6] {
888
+ color: #1e293b;
889
+ font-weight: 600;
890
+ }
891
+ .modal-footer[data-v-b1c1e4d6] {
892
+ background: #f8fafc;
893
+ border-top: 1px solid #e2e8f0;
894
+ }
895
+
896
+ /* 执行结果区域 */
897
+ .execution-results[data-v-b1c1e4d6] {
898
+ border-top: 1px solid #e2e8f0;
899
+ background: #f8fafc;
880
900
  }
881
- .health-item[data-v-94a9d8f2] {
901
+ .results-header[data-v-b1c1e4d6] {
882
902
  display: flex;
903
+ justify-content: space-between;
883
904
  align-items: center;
884
- padding: 0.75rem;
905
+ padding: 1rem 1.5rem;
906
+ background: linear-gradient(135deg, #f1f5f9 0%, #f8fafc 100%);
885
907
  border-bottom: 1px solid #e2e8f0;
886
908
  }
887
- .health-status[data-v-94a9d8f2] {
888
- min-width: 150px;
909
+ .results-title[data-v-b1c1e4d6] {
910
+ margin: 0;
911
+ font-size: 1rem;
889
912
  font-weight: 600;
913
+ color: #1e293b;
890
914
  display: flex;
891
915
  align-items: center;
892
916
  gap: 0.5rem;
893
917
  }
894
- .health-message[data-v-94a9d8f2] {
895
- flex: 1;
896
- color: #6b7280;
918
+ .results-content[data-v-b1c1e4d6] {
919
+ max-height: 400px;
920
+ overflow-y: auto;
921
+ padding: 1rem;
897
922
  }
898
- .modal[data-v-94a9d8f2] {
899
- background-color: rgba(0, 0, 0, 0.5);
923
+ .no-results[data-v-b1c1e4d6] {
924
+ display: flex;
925
+ flex-direction: column;
926
+ align-items: center;
927
+ justify-content: center;
928
+ padding: 3rem 1rem;
929
+ color: #94a3b8;
900
930
  }
901
- .modal-dialog[data-v-94a9d8f2] {
902
- max-width: 600px;
931
+ .no-results i[data-v-b1c1e4d6] {
932
+ font-size: 3rem;
933
+ margin-bottom: 1rem;
903
934
  }
904
- .modal-lg .modal-dialog[data-v-94a9d8f2] {
905
- max-width: 800px;
935
+ .no-results p[data-v-b1c1e4d6] {
936
+ margin: 0;
937
+ font-size: 1rem;
906
938
  }
907
- .modal-header[data-v-94a9d8f2] {
908
- background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
909
- border-bottom: 1px solid #e2e8f0;
939
+ .result-item[data-v-b1c1e4d6] {
940
+ margin-bottom: 0.75rem;
941
+ border: 1px solid #e2e8f0;
942
+ border-radius: 8px;
943
+ background: white;
944
+ overflow: hidden;
945
+ transition: box-shadow 0.2s;
946
+ }
947
+ .result-item[data-v-b1c1e4d6]:hover {
948
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
949
+ }
950
+ .result-item.result-success[data-v-b1c1e4d6] {
951
+ border-left: 4px solid #22c55e;
952
+ }
953
+ .result-item.result-error[data-v-b1c1e4d6] {
954
+ border-left: 4px solid #ef4444;
955
+ }
956
+ .result-item.result-info[data-v-b1c1e4d6] {
957
+ border-left: 4px solid #3b82f6;
910
958
  }
911
- .modal-title[data-v-94a9d8f2] {
959
+ .result-header[data-v-b1c1e4d6] {
960
+ display: flex;
961
+ justify-content: space-between;
962
+ align-items: center;
963
+ padding: 0.75rem 1rem;
964
+ cursor: pointer;
965
+ background: white;
966
+ transition: background 0.2s;
967
+ }
968
+ .result-header[data-v-b1c1e4d6]:hover {
969
+ background: #f8fafc;
970
+ }
971
+ .result-title[data-v-b1c1e4d6] {
972
+ display: flex;
973
+ align-items: center;
974
+ gap: 0.75rem;
975
+ flex: 1;
976
+ }
977
+ .result-title i[data-v-b1c1e4d6] {
978
+ font-size: 1.1rem;
979
+ }
980
+ .operation-name[data-v-b1c1e4d6] {
981
+ font-weight: 600;
912
982
  color: #1e293b;
913
- font-weight: 600;
983
+ font-size: 0.95rem;
914
984
  }
915
- .modal-footer[data-v-94a9d8f2] {
916
- background: #f8fafc;
985
+ .operation-time[data-v-b1c1e4d6] {
986
+ color: #64748b;
987
+ font-size: 0.85rem;
988
+ margin-left: auto;
989
+ }
990
+ .toggle-icon[data-v-b1c1e4d6] {
991
+ transition: transform 0.2s;
992
+ color: #94a3b8;
993
+ font-size: 0.9rem;
994
+ }
995
+ .toggle-icon.expanded[data-v-b1c1e4d6] {
996
+ transform: rotate(180deg);
997
+ }
998
+ .result-body[data-v-b1c1e4d6] {
999
+ padding: 1rem;
1000
+ background: #fafafa;
917
1001
  border-top: 1px solid #e2e8f0;
1002
+ }
1003
+ .result-body pre[data-v-b1c1e4d6] {
1004
+ margin: 0;
1005
+ font-size: 0.85rem;
1006
+ line-height: 1.5;
1007
+ max-height: 300px;
1008
+ overflow: auto;
1009
+ }
1010
+ .result-body code[data-v-b1c1e4d6] {
1011
+ font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
1012
+ }
1013
+
1014
+ /* JSON 语法高亮 - 不使用 scoped 以确保 v-html 内容能应用样式 */
1015
+ [data-v-b1c1e4d6] .json-key {
1016
+ color: #d04255;
1017
+ font-weight: 500;
1018
+ }
1019
+ [data-v-b1c1e4d6] .json-string {
1020
+ color: #22863a;
1021
+ }
1022
+ [data-v-b1c1e4d6] .json-number {
1023
+ color: #005cc5;
1024
+ }
1025
+ [data-v-b1c1e4d6] .json-boolean {
1026
+ color: #d73a49;
1027
+ }
1028
+ [data-v-b1c1e4d6] .json-null {
1029
+ color: #6f42c1;
1030
+ }
1031
+
1032
+ /* 滚动条样式 */
1033
+ .results-content[data-v-b1c1e4d6]::-webkit-scrollbar,
1034
+ .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar {
1035
+ width: 8px;
1036
+ height: 8px;
1037
+ }
1038
+ .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-track,
1039
+ .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-track {
1040
+ background: #f1f5f9;
1041
+ border-radius: 4px;
1042
+ }
1043
+ .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-thumb,
1044
+ .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-thumb {
1045
+ background: #cbd5e1;
1046
+ border-radius: 4px;
1047
+ }
1048
+ .results-content[data-v-b1c1e4d6]::-webkit-scrollbar-thumb:hover,
1049
+ .result-body pre[data-v-b1c1e4d6]::-webkit-scrollbar-thumb:hover {
1050
+ background: #94a3b8;
918
1051
  }
919
1052
 
920
1053
  .database-detail[data-v-fd20d470] {
@@ -1300,68 +1433,68 @@ to {
1300
1433
  font-size: 0.75rem;
1301
1434
  }
1302
1435
 
1303
- .table-detail[data-v-365fca24] {
1436
+ .table-detail[data-v-aa969b41] {
1304
1437
  width: 100%;
1305
1438
  height: 100%;
1306
1439
  display: flex;
1307
1440
  flex-direction: column;
1308
1441
  }
1309
- .table-header[data-v-365fca24] {
1442
+ .table-header[data-v-aa969b41] {
1310
1443
  background-color: #f8f9fa;
1311
1444
  border-bottom: 1px solid #dee2e6;
1312
1445
  padding: 15px 20px;
1313
1446
  }
1314
- .table-header-content[data-v-365fca24] {
1447
+ .table-header-content[data-v-aa969b41] {
1315
1448
  display: flex;
1316
1449
  justify-content: space-between;
1317
1450
  align-items: center;
1318
1451
  }
1319
- .table-info[data-v-365fca24] {
1452
+ .table-info[data-v-aa969b41] {
1320
1453
  display: flex;
1321
1454
  align-items: center;
1322
1455
  gap: 15px;
1323
1456
  }
1324
- .table-icon[data-v-365fca24] {
1457
+ .table-icon[data-v-aa969b41] {
1325
1458
  font-size: 32px;
1326
1459
  color: #495057;
1327
1460
  }
1328
- .table-meta[data-v-365fca24] {
1461
+ .table-meta[data-v-aa969b41] {
1329
1462
  display: flex;
1330
1463
  flex-direction: column;
1331
1464
  gap: 5px;
1332
1465
  }
1333
- .table-name[data-v-365fca24] {
1466
+ .table-name[data-v-aa969b41] {
1334
1467
  margin: 0;
1335
1468
  font-size: 1.25rem;
1336
1469
  font-weight: 600;
1337
1470
  }
1338
- .table-breadcrumb[data-v-365fca24] {
1471
+ .table-breadcrumb[data-v-aa969b41] {
1339
1472
  display: flex;
1340
1473
  align-items: center;
1341
1474
  gap: 8px;
1342
1475
  font-size: 0.875rem;
1343
1476
  color: #6c757d;
1344
1477
  }
1345
- .table-stats[data-v-365fca24] {
1478
+ .table-stats[data-v-aa969b41] {
1346
1479
  display: flex;
1347
1480
  gap: 20px;
1348
1481
  }
1349
- .stat-item[data-v-365fca24] {
1482
+ .stat-item[data-v-aa969b41] {
1350
1483
  display: flex;
1351
1484
  flex-direction: column;
1352
1485
  align-items: center;
1353
1486
  gap: 2px;
1354
1487
  }
1355
- .stat-value[data-v-365fca24] {
1488
+ .stat-value[data-v-aa969b41] {
1356
1489
  font-size: 1.125rem;
1357
1490
  font-weight: 600;
1358
1491
  color: #495057;
1359
1492
  }
1360
- .stat-label[data-v-365fca24] {
1493
+ .stat-label[data-v-aa969b41] {
1361
1494
  font-size: 0.75rem;
1362
1495
  color: #6c757d;
1363
1496
  }
1364
- .table-toolbar[data-v-365fca24] {
1497
+ .table-toolbar[data-v-aa969b41] {
1365
1498
  display: flex;
1366
1499
  justify-content: space-between;
1367
1500
  align-items: center;
@@ -1369,27 +1502,27 @@ to {
1369
1502
  background-color: #f8f9fa;
1370
1503
  border-bottom: 1px solid #dee2e6;
1371
1504
  }
1372
- .toolbar-left[data-v-365fca24] {
1505
+ .toolbar-left[data-v-aa969b41] {
1373
1506
  display: flex;
1374
1507
  gap: 10px;
1375
1508
  align-items: center;
1376
1509
  }
1377
- .toolbar-right[data-v-365fca24] {
1510
+ .toolbar-right[data-v-aa969b41] {
1378
1511
  display: flex;
1379
1512
  gap: 10px;
1380
1513
  align-items: center;
1381
1514
  }
1382
- .table-tabs[data-v-365fca24] {
1515
+ .table-tabs[data-v-aa969b41] {
1383
1516
  flex: 1;
1384
1517
  display: flex;
1385
1518
  flex-direction: column;
1386
1519
  overflow: hidden;
1387
1520
  }
1388
- .nav-tabs[data-v-365fca24] {
1521
+ .nav-tabs[data-v-aa969b41] {
1389
1522
  border-bottom: 1px solid #dee2e6;
1390
1523
  background-color: #f8f9fa;
1391
1524
  }
1392
- .nav-tabs .nav-link[data-v-365fca24] {
1525
+ .nav-tabs .nav-link[data-v-aa969b41] {
1393
1526
  color: #495057;
1394
1527
  border: none;
1395
1528
  border-bottom: 3px solid transparent;
@@ -1397,54 +1530,54 @@ to {
1397
1530
  padding: 10px 15px;
1398
1531
  font-weight: 500;
1399
1532
  }
1400
- .nav-tabs .nav-link[data-v-365fca24]:hover {
1533
+ .nav-tabs .nav-link[data-v-aa969b41]:hover {
1401
1534
  background-color: #e9ecef;
1402
1535
  border-bottom-color: #adb5bd;
1403
1536
  }
1404
- .nav-tabs .nav-link.active[data-v-365fca24] {
1537
+ .nav-tabs .nav-link.active[data-v-aa969b41] {
1405
1538
  background-color: #fff;
1406
1539
  border-bottom-color: #0d6efd;
1407
1540
  color: #0d6efd;
1408
1541
  }
1409
- .tab-content[data-v-365fca24] {
1542
+ .tab-content[data-v-aa969b41] {
1410
1543
  flex: 1;
1411
1544
  overflow: auto;
1412
1545
  padding: 20px;
1413
1546
  background-color: #fff;
1414
1547
  }
1415
- .tab-panel[data-v-365fca24] {
1548
+ .tab-panel[data-v-aa969b41] {
1416
1549
  height: 100%;
1417
1550
  }
1418
- .data-content[data-v-365fca24] {
1551
+ .data-content[data-v-aa969b41] {
1419
1552
  height: 100%;
1420
1553
  display: flex;
1421
1554
  flex-direction: column;
1422
1555
  }
1423
- .data-content.loading[data-v-365fca24] {
1556
+ .data-content.loading[data-v-aa969b41] {
1424
1557
  opacity: 0.7;
1425
1558
  pointer-events: none;
1426
1559
  }
1427
- .table-responsive[data-v-365fca24] {
1560
+ .table-responsive[data-v-aa969b41] {
1428
1561
  flex: 1;
1429
1562
  overflow: auto;
1430
1563
  }
1431
- .column-header[data-v-365fca24] {
1564
+ .column-header[data-v-aa969b41] {
1432
1565
  position: relative;
1433
1566
  }
1434
- .column-key[data-v-365fca24] {
1567
+ .column-key[data-v-aa969b41] {
1435
1568
  position: absolute;
1436
1569
  top: -5px;
1437
1570
  right: -15px;
1438
1571
  color: #0d6efd;
1439
1572
  font-size: 0.75rem;
1440
1573
  }
1441
- .cell-value[data-v-365fca24] {
1574
+ .cell-value[data-v-aa969b41] {
1442
1575
  max-width: 200px;
1443
1576
  overflow: hidden;
1444
1577
  text-overflow: ellipsis;
1445
1578
  white-space: nowrap;
1446
1579
  }
1447
- .loading-state[data-v-365fca24] {
1580
+ .loading-state[data-v-aa969b41] {
1448
1581
  display: flex;
1449
1582
  flex-direction: column;
1450
1583
  align-items: center;
@@ -1452,7 +1585,7 @@ to {
1452
1585
  height: 300px;
1453
1586
  gap: 15px;
1454
1587
  }
1455
- .empty-state[data-v-365fca24] {
1588
+ .empty-state[data-v-aa969b41] {
1456
1589
  display: flex;
1457
1590
  flex-direction: column;
1458
1591
  align-items: center;
@@ -1461,76 +1594,76 @@ to {
1461
1594
  gap: 15px;
1462
1595
  color: #6c757d;
1463
1596
  }
1464
- .empty-state i[data-v-365fca24] {
1597
+ .empty-state i[data-v-aa969b41] {
1465
1598
  font-size: 48px;
1466
1599
  opacity: 0.5;
1467
1600
  }
1468
- .pagination-nav[data-v-365fca24] {
1601
+ .pagination-nav[data-v-aa969b41] {
1469
1602
  margin-top: 20px;
1470
1603
  border-top: 1px solid #dee2e6;
1471
1604
  padding-top: 15px;
1472
1605
  }
1473
- .pagination-container[data-v-365fca24] {
1606
+ .pagination-container[data-v-aa969b41] {
1474
1607
  display: flex;
1475
1608
  align-items: center;
1476
1609
  justify-content: space-between;
1477
1610
  flex-wrap: wrap;
1478
1611
  gap: 10px;
1479
1612
  }
1480
- .pagination-info[data-v-365fca24] {
1613
+ .pagination-info[data-v-aa969b41] {
1481
1614
  font-size: 0.875rem;
1482
1615
  color: #6c757d;
1483
1616
  }
1484
- .page-size-selector[data-v-365fca24] {
1617
+ .page-size-selector[data-v-aa969b41] {
1485
1618
  display: flex;
1486
1619
  align-items: center;
1487
1620
  gap: 5px;
1488
1621
  }
1489
- .page-jump[data-v-365fca24] {
1622
+ .page-jump[data-v-aa969b41] {
1490
1623
  display: flex;
1491
1624
  align-items: center;
1492
1625
  gap: 5px;
1493
1626
  }
1494
- .structure-actions[data-v-365fca24] {
1627
+ .structure-actions[data-v-aa969b41] {
1495
1628
  display: flex;
1496
1629
  gap: 10px;
1497
1630
  margin-bottom: 15px;
1498
1631
  }
1499
- .structure-table[data-v-365fca24], .indexes-table[data-v-365fca24], .relations-table[data-v-365fca24] {
1632
+ .structure-table[data-v-aa969b41], .indexes-table[data-v-aa969b41], .relations-table[data-v-aa969b41] {
1500
1633
  overflow: auto;
1501
1634
  }
1502
- .structure-table table[data-v-365fca24], .indexes-table table[data-v-365fca24], .relations-table table[data-v-365fca24] {
1635
+ .structure-table table[data-v-aa969b41], .indexes-table table[data-v-aa969b41], .relations-table table[data-v-aa969b41] {
1503
1636
  width: 100%;
1504
1637
  }
1505
- .sql-section[data-v-365fca24] {
1638
+ .sql-section[data-v-aa969b41] {
1506
1639
  height: 100%;
1507
1640
  }
1508
1641
 
1509
1642
  /* 响应式设计 */
1510
1643
  @media (max-width: 768px) {
1511
- .table-header-content[data-v-365fca24] {
1644
+ .table-header-content[data-v-aa969b41] {
1512
1645
  flex-direction: column;
1513
1646
  align-items: flex-start;
1514
1647
  gap: 15px;
1515
1648
  }
1516
- .table-stats[data-v-365fca24] {
1649
+ .table-stats[data-v-aa969b41] {
1517
1650
  width: 100%;
1518
1651
  justify-content: space-around;
1519
1652
  }
1520
- .table-toolbar[data-v-365fca24] {
1653
+ .table-toolbar[data-v-aa969b41] {
1521
1654
  flex-direction: column;
1522
1655
  align-items: stretch;
1523
1656
  gap: 10px;
1524
1657
  }
1525
- .toolbar-left[data-v-365fca24], .toolbar-right[data-v-365fca24] {
1658
+ .toolbar-left[data-v-aa969b41], .toolbar-right[data-v-aa969b41] {
1526
1659
  justify-content: center;
1527
1660
  }
1528
- .pagination-container[data-v-365fca24] {
1661
+ .pagination-container[data-v-aa969b41] {
1529
1662
  flex-direction: column;
1530
1663
  align-items: flex-start;
1531
1664
  gap: 15px;
1532
1665
  }
1533
- .pagination[data-v-365fca24] {
1666
+ .pagination[data-v-aa969b41] {
1534
1667
  width: 100%;
1535
1668
  justify-content: center;
1536
1669
  }