@@ -407,55 +407,34 @@ endfunction
407407
408408function ! s: drawer .add_db (db) abort
409409 let db_name = a: db .name
410+
410411 if ! empty (a: db .conn_error)
411412 let db_name .= ' ' .g: db_ui_icons .connection_error
412413 elseif ! empty (a: db .conn)
413414 let db_name .= ' ' .g: db_ui_icons .connection_ok
414415 endif
416+
415417 if self .show_details
416418 let db_name .= ' (' .a: db .scheme.' - ' .a: db .source .' )'
417419 endif
420+
418421 call self .add (db_name, ' toggle' , ' db' , self .get_toggle_icon (' db' , a: db ), a: db .key_name, 0 , { ' expanded' : a: db .expanded })
419422 if ! a: db .expanded
420423 return a: db
421424 endif
422425
423- call self .add (' New query' , ' open' , ' query' , g: db_ui_icons .new_query, a: db .key_name, 1 )
424- if ! empty (a: db .buffers .list )
425- call self .add (' Buffers (' .len (a: db .buffers .list ).' )' , ' toggle' , ' buffers' , self .get_toggle_icon (' buffers' , a: db .buffers ), a: db .key_name, 1 , { ' expanded' : a: db .buffers .expanded })
426- if a: db .buffers .expanded
427- for buf in a: db .buffers .list
428- let buflabel = self .get_buffer_name (a: db , buf )
429- if self .dbui.is_tmp_location_buffer (a: db , buf )
430- let buflabel .= ' *'
431- endif
432- call self .add (buflabel, ' open' , ' buffer' , g: db_ui_icons .buffers , a: db .key_name, 2 , { ' file_path' : buf })
433- endfor
426+ " Render sections based on g:db_ui_drawer_sections configuration
427+ for section in g: db_ui_drawer_sections
428+ if section == # ' new_query'
429+ call self ._render_new_query_section (a: db )
430+ elseif section == # ' buffers' && ! empty (a: db .buffers .list )
431+ call self ._render_buffers_section (a: db )
432+ elseif section == # ' saved_queries'
433+ call self ._render_saved_queries_section (a: db )
434+ elseif section == # ' schemas'
435+ call self ._render_schemas_section (a: db )
434436 endif
435- endif
436- call self .add (' Saved queries (' .len (a: db .saved_queries.list ).' )' , ' toggle' , ' saved_queries' , self .get_toggle_icon (' saved_queries' , a: db .saved_queries), a: db .key_name, 1 , { ' expanded' : a: db .saved_queries.expanded })
437- if a: db .saved_queries.expanded
438- for saved_query in a: db .saved_queries.list
439- call self .add (fnamemodify (saved_query, ' :t' ), ' open' , ' buffer' , g: db_ui_icons .saved_query, a: db .key_name, 2 , { ' file_path' : saved_query, ' saved' : 1 })
440- endfor
441- endif
442-
443- if a: db .schema_support
444- call self .add (' Schemas (' .len (a: db .schemas.items ).' )' , ' toggle' , ' schemas' , self .get_toggle_icon (' schemas' , a: db .schemas), a: db .key_name, 1 , { ' expanded' : a: db .schemas.expanded })
445- if a: db .schemas.expanded
446- for schema in a: db .schemas.list
447- let schema_item = a: db .schemas.items [schema]
448- let tables = schema_item.tables
449- call self .add (schema.' (' .len (tables.items ).' )' , ' toggle' , ' schemas->items->' .schema, self .get_toggle_icon (' schema' , schema_item), a: db .key_name, 2 , { ' expanded' : schema_item.expanded })
450- if schema_item.expanded
451- call self .render_tables (tables, a: db ,' schemas->items->' .schema.' ->tables->items' , 3 , schema)
452- endif
453- endfor
454- endif
455- else
456- call self .add (' Tables (' .len (a: db .tables.items ).' )' , ' toggle' , ' tables' , self .get_toggle_icon (' tables' , a: db .tables), a: db .key_name, 1 , { ' expanded' : a: db .tables.expanded })
457- call self .render_tables (a: db .tables, a: db , ' tables->items' , 2 , ' ' )
458- endif
437+ endfor
459438endfunction
460439
461440function ! s: drawer .render_tables (tables, db, path , level , schema) abort
@@ -719,6 +698,51 @@ function! s:drawer.get_buffer_name(db, buffer)
719698 return substitute (name, ' ^' .db_ui#utils#slug (a: db .name).' -' , ' ' , ' ' )
720699endfunction
721700
701+ function ! s: drawer ._render_new_query_section (db) abort
702+ call self .add (' New query' , ' open' , ' query' , g: db_ui_icons .new_query, a: db .key_name, 1 )
703+ endfunction
704+
705+ function ! s: drawer ._render_buffers_section (db) abort
706+ call self .add (' Buffers (' .len (a: db .buffers .list ).' )' , ' toggle' , ' buffers' , self .get_toggle_icon (' buffers' , a: db .buffers ), a: db .key_name, 1 , { ' expanded' : a: db .buffers .expanded })
707+ if a: db .buffers .expanded
708+ for buf in a: db .buffers .list
709+ let buflabel = self .get_buffer_name (a: db , buf )
710+ if self .dbui.is_tmp_location_buffer (a: db , buf )
711+ let buflabel .= ' *'
712+ endif
713+ call self .add (buflabel, ' open' , ' buffer' , g: db_ui_icons .buffers , a: db .key_name, 2 , { ' file_path' : buf })
714+ endfor
715+ endif
716+ endfunction
717+
718+ function ! s: drawer ._render_saved_queries_section (db) abort
719+ call self .add (' Saved queries (' .len (a: db .saved_queries.list ).' )' , ' toggle' , ' saved_queries' , self .get_toggle_icon (' saved_queries' , a: db .saved_queries), a: db .key_name, 1 , { ' expanded' : a: db .saved_queries.expanded })
720+ if a: db .saved_queries.expanded
721+ for saved_query in a: db .saved_queries.list
722+ call self .add (fnamemodify (saved_query, ' :t' ), ' open' , ' buffer' , g: db_ui_icons .saved_query, a: db .key_name, 2 , { ' file_path' : saved_query, ' saved' : 1 })
723+ endfor
724+ endif
725+ endfunction
726+
727+ function ! s: drawer ._render_schemas_section (db) abort
728+ if a: db .schema_support
729+ call self .add (' Schemas (' .len (a: db .schemas.items ).' )' , ' toggle' , ' schemas' , self .get_toggle_icon (' schemas' , a: db .schemas), a: db .key_name, 1 , { ' expanded' : a: db .schemas.expanded })
730+ if a: db .schemas.expanded
731+ for schema in a: db .schemas.list
732+ let schema_item = a: db .schemas.items [schema]
733+ let tables = schema_item.tables
734+ call self .add (schema.' (' .len (tables.items ).' )' , ' toggle' , ' schemas->items->' .schema, self .get_toggle_icon (' schema' , schema_item), a: db .key_name, 2 , { ' expanded' : schema_item.expanded })
735+ if schema_item.expanded
736+ call self .render_tables (tables, a: db ,' schemas->items->' .schema.' ->tables->items' , 3 , schema)
737+ endif
738+ endfor
739+ endif
740+ else
741+ call self .add (' Tables (' .len (a: db .tables.items ).' )' , ' toggle' , ' tables' , self .get_toggle_icon (' tables' , a: db .tables), a: db .key_name, 1 , { ' expanded' : a: db .tables.expanded })
742+ call self .render_tables (a: db .tables, a: db , ' tables->items' , 2 , ' ' )
743+ endif
744+ endfunction
745+
722746function ! s: drawer ._is_schema_ignored (schema_name)
723747 for ignored_schema in g: db_ui_hide_schemas
724748 if match (a: schema_name , ignored_schema) > -1
0 commit comments