@@ -12,12 +12,51 @@ export function useSchemaTree(database?: string) {
1212 if ( ! database ) return
1313
1414 let cancelled = false
15+
1516 setLoading ( true )
1617 setError ( null )
1718
1819 const loadTree = async ( ) => {
1920 try {
21+ const adapter = await window . datary . db . getAdapterType ( )
22+
23+ if ( adapter === 'mysql' ) {
24+ const [ tables , views ] = await Promise . all ( [
25+ window . datary . db . loadTables ( database , null ) . catch ( ( ) => [ ] ) ,
26+ window . datary . db . loadViews ( database , null ) . catch ( ( ) => [ ] )
27+ ] )
28+
29+ const folders : TreeNode [ ] = [ ]
30+
31+ if ( tables . length ) {
32+ folders . push ( {
33+ type : 'folder' ,
34+ name : 'Tables' ,
35+ children : tables . map ( t => ( {
36+ type : 'table' ,
37+ name : t . name
38+ } ) )
39+ } )
40+ }
41+
42+ if ( views . length ) {
43+ folders . push ( {
44+ type : 'folder' ,
45+ name : 'Views' ,
46+ children : views . map ( v => ( {
47+ type : 'view' ,
48+ name : v . name
49+ } ) )
50+ } )
51+ }
52+
53+ if ( ! cancelled ) setTree ( folders )
54+
55+ return
56+ }
57+
2058 const schemas = await window . datary . db . loadSchemas ( database )
59+
2160 if ( ! schemas . length ) {
2261 toast . error ( `No schemas found for database ${ database } ` )
2362 return
@@ -26,47 +65,52 @@ export function useSchemaTree(database?: string) {
2665 const treeData : TreeNode [ ] = [ ]
2766
2867 for ( const schema of schemas ) {
29- const schemaName = typeof schema === 'string' ? schema : schema . name
68+ const schemaName = schema . name
3069
31- const tables = await window . datary . db
32- . loadTables ( database , schemaName )
33- . catch ( ( ) => [ ] )
34- const views = await window . datary . db
35- . loadViews ( database , schemaName )
36- . catch ( ( ) => [ ] )
70+ const [ tables , views ] = await Promise . all ( [
71+ window . datary . db . loadTables ( database , schemaName ) . catch ( ( ) => [ ] ) ,
72+ window . datary . db . loadViews ( database , schemaName ) . catch ( ( ) => [ ] )
73+ ] )
3774
38- const folders : TreeNode [ ] = [ ]
75+ const children : TreeNode [ ] = [ ]
3976
4077 if ( tables . length ) {
41- folders . push ( {
42- name : 'Tables' ,
78+ children . push ( {
4379 type : 'folder' ,
44- children : tables . map ( t => ( { name : t . name , type : 'table' } ) )
80+ name : 'Tables' ,
81+ children : tables . map ( t => ( {
82+ type : 'table' ,
83+ name : t . name
84+ } ) )
4585 } )
4686 }
4787
4888 if ( views . length ) {
49- folders . push ( {
50- name : 'Views' ,
89+ children . push ( {
5190 type : 'folder' ,
52- children : views . map ( v => ( { name : v . name , type : 'view' } ) )
91+ name : 'Views' ,
92+ children : views . map ( v => ( {
93+ type : 'view' ,
94+ name : v . name
95+ } ) )
5396 } )
5497 }
5598
56- if ( folders . length ) {
99+ if ( children . length ) {
57100 treeData . push ( {
58- name : schemaName ,
59101 type : 'schema' ,
60- children : folders
102+ name : schemaName ,
103+ children
61104 } )
62105 }
63106 }
64107
65108 if ( ! cancelled ) setTree ( treeData )
66109 } catch ( err : any ) {
67110 if ( ! cancelled ) {
68- setError ( err ?. message || 'Failed to load database tree' )
69- toast . error ( err ?. message || 'Failed to load database tree' )
111+ const message = err ?. message || 'Failed to load database tree'
112+ setError ( message )
113+ toast . error ( message )
70114 }
71115 } finally {
72116 if ( ! cancelled ) setLoading ( false )
0 commit comments