@@ -43,7 +43,8 @@ const useLogQueryStore = defineStore('logQuery', () => {
43
43
44
44
const rangeTime = ref < Array < string > > ( [ ] )
45
45
const time = ref ( 10 )
46
- const inputTableName = ref ( '' )
46
+ const inputTableName = ref ( '' ) // table after query
47
+ const editingTableName = ref ( '' ) // table in editing
47
48
48
49
const columns = computed ( ( ) => {
49
50
if ( ! inputTableName . value ) {
@@ -82,8 +83,10 @@ const useLogQueryStore = defineStore('logQuery', () => {
82
83
type Multiple = 1000 | 1000000 | 1000000000
83
84
const multipleRe = / t i m e s t a m p \( ( \d ) \) /
84
85
const dataLoadFlag = ref ( 0 )
85
- const tsColumn = computed < TSColumn > ( ( ) => {
86
- const fields = tableMap . value [ inputTableName . value ] || [ ]
86
+ const tsColumn = shallowRef < TSColumn > ( )
87
+
88
+ const getTsColumn = ( tableName : string ) => {
89
+ const fields = tableMap . value [ tableName ] || [ ]
87
90
const field = fields . filter ( ( column ) => column . data_type . toLowerCase ( ) . indexOf ( 'timestamp' ) > - 1 ) [ 0 ]
88
91
if ( ! field ) {
89
92
return null
@@ -94,7 +97,7 @@ const useLogQueryStore = defineStore('logQuery', () => {
94
97
multiple : ( 1000 ** ( Number ( timescale [ 1 ] ) / 3 ) ) as Multiple ,
95
98
...field ,
96
99
}
97
- } )
100
+ }
98
101
99
102
const query = ( ) => {
100
103
queryLoading . value = true
@@ -204,12 +207,12 @@ const useLogQueryStore = defineStore('logQuery', () => {
204
207
let val = escapeSqlString ( condition . value )
205
208
if ( condition . op === 'not contains' ) {
206
209
val = `-"${ val } "`
207
- } else if ( condition . op === 'match sequence ' ) {
210
+ } else if ( condition . op === 'contains ' ) {
208
211
val = `"${ val } "`
209
212
}
210
- return `MATCHES(${ condition . field . name } ,'" ${ val } " ')`
213
+ return `MATCHES(${ condition . field . name } ,'${ val } ')`
211
214
}
212
- return `${ condition . field . name } ${ condition . op } '" ${ escapeSqlString ( condition . value ) } " '`
215
+ return `${ condition . field . name } ${ condition . op } '${ escapeSqlString ( condition . value ) } '`
213
216
}
214
217
215
218
function buildCondition ( ) {
@@ -242,15 +245,16 @@ const useLogQueryStore = defineStore('logQuery', () => {
242
245
}
243
246
244
247
watch (
245
- [ queryForm , unifiedRange , limit ] ,
248
+ [ queryForm , unifiedRange , limit , editingTableName ] ,
246
249
( ) => {
247
- if ( ! inputTableName . value ) {
250
+ if ( ! editingTableName . value ) {
248
251
return
249
252
}
250
253
if ( editorType . value !== 'builder' ) {
251
254
return
252
255
}
253
- let str = `SELECT * FROM ${ inputTableName . value } `
256
+ tsColumn . value = getTsColumn ( editingTableName . value )
257
+ let str = `SELECT * FROM ${ editingTableName . value } `
254
258
const where = buildCondition ( )
255
259
if ( where . length ) {
256
260
str += ` WHERE ${ where . join ( '' ) } `
@@ -273,13 +277,34 @@ const useLogQueryStore = defineStore('logQuery', () => {
273
277
}
274
278
} )
275
279
280
+ type TypeKey = keyof typeof typeMap
281
+ const opMap = {
282
+ String : [ '=' , 'contains' , 'not contains' , '!=' , 'like' ] ,
283
+ Number : [ '=' , '!=' , '>' , '>=' , '<' , '<=' ] ,
284
+ Time : [ '>' , '>=' , '<' , '<=' ] ,
285
+ }
286
+ type OpKey = keyof typeof opMap
287
+
288
+ function getOpByField ( field : string ) : string [ ] {
289
+ const fields = tableMap . value [ editingTableName . value ]
290
+ const index = fields . findIndex ( ( f ) => f . name === field )
291
+ if ( index === - 1 ) {
292
+ return [ ]
293
+ }
294
+ const type = fields [ index ] . data_type as TypeKey
295
+ const opKey = typeMap [ type ] as OpKey
296
+ return opMap [ opKey ] || [ ]
297
+ }
298
+
276
299
function reset ( ) {
300
+ editingTableName . value = ''
277
301
inputTableName . value = ''
278
302
sql . value = ''
279
303
editingSql . value = ''
280
304
queryForm . conditions = [ ]
281
305
rows . value = [ ]
282
306
}
307
+
283
308
return {
284
309
sql,
285
310
query,
@@ -290,6 +315,7 @@ const useLogQueryStore = defineStore('logQuery', () => {
290
315
selectedRowKey,
291
316
rangeTime,
292
317
inputTableName,
318
+ editingTableName,
293
319
tsColumn,
294
320
time,
295
321
unifiedRange,
@@ -311,7 +337,10 @@ const useLogQueryStore = defineStore('logQuery', () => {
311
337
dataLoadFlag,
312
338
showKeys,
313
339
queryColumns,
340
+ getOpByField,
314
341
reset,
342
+ getTsColumn,
315
343
}
316
344
} )
345
+
317
346
export default useLogQueryStore
0 commit comments