@@ -3,11 +3,13 @@ import { ref, watch } from 'vue'
33import { API } from ' ./net'
44import type { QueryObject } from ' ./net'
55import type { Store } from ' ./store'
6+ import { Driver , GetDriverName , ExtensionKind } from ' ./store'
67import type { Pair } from ' ./types'
78import { GetDataManagerPreference , SetDataManagerPreference } from ' ./cache'
89import { ElMessage } from ' element-plus'
910import { Codemirror } from ' vue-codemirror'
10- import { sql , StandardSQL } from " @codemirror/lang-sql"
11+ import { sql , StandardSQL , MySQL , PostgreSQL , Cassandra } from " @codemirror/lang-sql"
12+ import type { SQLConfig } from " @codemirror/lang-sql"
1113import HistoryInput from ' ../components/HistoryInput.vue'
1214import type { Ref } from ' vue'
1315import { Refresh , Document } from ' @element-plus/icons-vue'
@@ -47,14 +49,27 @@ const storeChangedEvent = (s: string) => {
4749 stores .value .forEach ((e : Store ) => {
4850 if (e .name === s ) {
4951 kind .value = e .kind .name
52+ switch (GetDriverName (e )){
53+ case Driver .MySQL :
54+ sqlConfig .value .dialect = MySQL
55+ break ;
56+ case Driver .Postgres :
57+ sqlConfig .value .dialect = PostgreSQL
58+ break ;
59+ case Driver .Cassandra :
60+ sqlConfig .value .dialect = Cassandra
61+ break ;
62+ default :
63+ sqlConfig .value .dialect = StandardSQL
64+ }
5065 return
5166 }
5267 })
5368
5469 switch (kind .value ) {
55- case ' atest-store-elasticsearch ' :
56- case ' atest-store-etcd ' :
57- case ' atest-store-redis ' :
70+ case ExtensionKind . ExtensionKindElasticsearch :
71+ case ExtensionKind . ExtensionKindEtcd :
72+ case ExtensionKind . ExtensionKindRedis :
5873 sqlQuery .value = ' *'
5974 complexEditor .value = false
6075 break
@@ -89,7 +104,7 @@ const queryDataFromTable = (data: QueryData) => {
89104}
90105const describeTable = (data : QueryData ) => {
91106 switch (kind .value ) {
92- case ' atest-store-cassandra ' :
107+ case ExtensionKind . ExtensionKindCassandra :
93108 sqlQuery .value = ` @describeTable_${queryDataMeta .value .currentDatabase }:${data .label } `
94109 break
95110 default :
@@ -102,17 +117,17 @@ const queryTables = () => {
102117}
103118watch (kind , (k ) => {
104119 switch (k ) {
105- case ' atest-store-orm ' :
106- case ' atest-store-cassandra ' :
107- case ' atest-store-iotdb ' :
120+ case ExtensionKind . ExtensionKindORM :
121+ case ExtensionKind . ExtensionKindCassandra :
122+ case ExtensionKind . ExtensionKindIotDB :
108123 queryTip .value = ' Enter SQL query'
109124 executeQuery ()
110125 break ;
111- case ' atest-store-etcd ' :
112- case ' atest-store-redis ' :
126+ case ExtensionKind . ExtensionKindEtcd :
127+ case ExtensionKind . ExtensionKindRedis :
113128 queryTip .value = ' Enter key'
114129 break ;
115- case ' atest-store-elasticsearch ' :
130+ case ExtensionKind . ExtensionKindElasticsearch :
116131 queryTip .value = ' field:value OR field:other'
117132 break ;
118133 }
@@ -139,6 +154,7 @@ API.GetStores((data) => {
139154 loadingStores .value = false
140155})
141156
157+ const showNativeSQL = ref (true )
142158const ormDataHandler = (data : QueryData ) => {
143159 const result = [] as any []
144160 const cols = new Set <string >()
@@ -154,7 +170,7 @@ const ormDataHandler = (data: QueryData) => {
154170
155171 columns .value = [] as string []
156172 data .meta .labels = data .meta .labels .filter ((item ) => {
157- if (item .key === ' _native_sql' ) {
173+ if (showNativeSQL . value && item .key === ' _native_sql' ) {
158174 sqlQuery .value = item .value
159175 return false
160176 }
@@ -196,20 +212,20 @@ const keyValueDataHandler = (data: QueryData) => {
196212 })
197213 })
198214}
199-
200215const sqlConfig = ref ({
201216 dialect: StandardSQL ,
202217 defaultSchema: queryDataMeta .value .currentDatabase ,
203218 upperCaseKeywords: true ,
204219 schema: {}
205- })
220+ } as SQLConfig )
206221
207222const executeQuery = async () => {
223+ showNativeSQL .value = true
208224 if (sqlQuery .value === ' ' ) {
209225 switch (kind .value ) {
210- case ' atest-store-elasticsearch ' :
211- case ' atest-store-etcd ' :
212- case ' atest-store-redis ' :
226+ case ExtensionKind . ExtensionKindElasticsearch :
227+ case ExtensionKind . ExtensionKindEtcd :
228+ case ExtensionKind . ExtensionKindRedis :
213229 if (sqlQuery .value === ' ' ) {
214230 sqlQuery .value = ' *'
215231 }
@@ -227,16 +243,16 @@ const executeWithQuery = async (sql: string) => {
227243 try {
228244 const data = await API .DataQueryAsync (query .value );
229245 switch (kind .value ) {
230- case ' atest-store-orm ' :
231- case ' atest-store-cassandra ' :
232- case ' atest-store-iotdb ' :
233- case ' atest-store-opengemini ' :
234- case ' atest-store-elasticsearch ' :
246+ case ExtensionKind . ExtensionKindORM :
247+ case ExtensionKind . ExtensionKindCassandra :
248+ case ExtensionKind . ExtensionKindIotDB :
249+ case ExtensionKind . ExtensionKindOpengeMini :
250+ case ExtensionKind . ExtensionKindElasticsearch :
235251 ormDataHandler (data )
236252 success = true
237253 break ;
238- case ' atest-store-etcd ' :
239- case ' atest-store-redis ' :
254+ case ExtensionKind . ExtensionKindEtcd :
255+ case ExtensionKind . ExtensionKindRedis :
240256 keyValueDataHandler (data )
241257 break ;
242258 default :
@@ -277,6 +293,13 @@ Magic.AdvancedKeys([{
277293 Keys: [' Ctrl+E' , ' Ctrl+Enter' ],
278294 Func: executeQuery ,
279295 Description: ' Execute query'
296+ }, {
297+ Keys: [' Ctrl+Shift+O' ],
298+ Func : () => {
299+ showNativeSQL .value = false
300+ executeWithQuery (sqlQuery .value )
301+ },
302+ Description: ' Execute query without showing native SQL'
280303}])
281304 </script >
282305
0 commit comments