@@ -10,7 +10,25 @@ const sqlQuery = ref('')
1010const queryResult = ref ([])
1111const columns = ref ([])
1212const queryTip = ref (' ' )
13+ const databases = ref ([])
14+ const tables = ref ([])
15+ const currentDatabase = ref (' ' )
1316
17+ interface Tree {
18+ label: string
19+ children? : Tree []
20+ }
21+ const tablesTree: Tree [] = []
22+ watch (tables , (t ) => {
23+ // clear tablesTree
24+ tablesTree .splice (0 , tablesTree .length )
25+ t .forEach ((i ) => {
26+ tablesTree .push ({
27+ label: i ,
28+ })
29+ })
30+ console .log (tablesTree )
31+ })
1432watch (store , (s ) => {
1533 stores .value .forEach ((e : Store ) => {
1634 if (e .name === s ) {
@@ -46,7 +64,7 @@ const ormDataHandler = (data) => {
4664 const result = []
4765 const cols = new Set ()
4866
49- data .Rows .forEach (e => {
67+ data .items .forEach (e => {
5068 const obj = {}
5169 e .data .forEach (item => {
5270 obj [item .key ] = item .value
@@ -55,6 +73,8 @@ const ormDataHandler = (data) => {
5573 result .push (obj )
5674 })
5775
76+ databases .value = data .meta .databases
77+ tables .value = data .meta .tables
5878 queryResult .value = result
5979 columns .value = Array .from (cols ).sort ((a , b ) => {
6080 if (a === ' id' ) return - 1 ;
@@ -103,30 +123,45 @@ const executeQuery = async () => {
103123
104124<template >
105125 <div >
106- <el-form @submit.prevent =" executeQuery" >
107- <el-row :gutter =" 10" >
108- <el-col :span =" 2" >
109- <el-form-item >
110- <el-select v-model =" store" placeholder =" Select store" >
111- <el-option v-for =" item in stores" :key =" item.name" :label =" item.name"
112- :value =" item.name" :disabled =" !item.ready" :kind =" item.kind.name" ></el-option >
113- </el-select >
114- </el-form-item >
115- </el-col >
116- <el-col :span =" 18" >
117- <el-form-item >
118- <el-input v-model =" sqlQuery" :placeholder =" queryTip" @keyup.enter =" executeQuery" ></el-input >
119- </el-form-item >
120- </el-col >
121- <el-col :span =" 2" >
122- <el-form-item >
123- <el-button type =" primary" @click =" executeQuery" >Execute</el-button >
124- </el-form-item >
125- </el-col >
126- </el-row >
127- </el-form >
128- <el-table :data =" queryResult" >
129- <el-table-column v-for =" col in columns" :key =" col" :prop =" col" :label =" col" ></el-table-column >
130- </el-table >
126+ <el-container >
127+ <el-aside width =" 200px" >
128+ <el-select v-model =" currentDatabase" placeholder =" Select database" >
129+ <el-option v-for =" item in databases" :key =" item" :label =" item"
130+ :value =" item" ></el-option >
131+ </el-select >
132+ <el-tree :data =" tablesTree" />
133+ </el-aside >
134+ <el-container >
135+ <el-header >
136+ <el-form @submit.prevent =" executeQuery" >
137+ <el-row :gutter =" 10" >
138+ <el-col :span =" 2" >
139+ <el-form-item >
140+ <el-select v-model =" store" placeholder =" Select store" >
141+ <el-option v-for =" item in stores" :key =" item.name" :label =" item.name"
142+ :value =" item.name" :disabled =" !item.ready" :kind =" item.kind.name" ></el-option >
143+ </el-select >
144+ </el-form-item >
145+ </el-col >
146+ <el-col :span =" 18" >
147+ <el-form-item >
148+ <el-input v-model =" sqlQuery" :placeholder =" queryTip" @keyup.enter =" executeQuery" ></el-input >
149+ </el-form-item >
150+ </el-col >
151+ <el-col :span =" 2" >
152+ <el-form-item >
153+ <el-button type =" primary" @click =" executeQuery" >Execute</el-button >
154+ </el-form-item >
155+ </el-col >
156+ </el-row >
157+ </el-form >
158+ </el-header >
159+ <el-main >
160+ <el-table :data =" queryResult" >
161+ <el-table-column v-for =" col in columns" :key =" col" :prop =" col" :label =" col" ></el-table-column >
162+ </el-table >
163+ </el-main >
164+ </el-container >
165+ </el-container >
131166 </div >
132167</template >
0 commit comments