@@ -173,8 +173,14 @@ def get_conn_label(config: Any, connected: Any = False) -> str:
173173 dbs_node .data = FolderNode (folder_type = "databases" )
174174
175175 databases = self ._run_db_call (adapter .get_databases , self .current_connection )
176+ default_db = self .current_config .database if self .current_config else None
176177 for db_name in databases :
177- db_node = dbs_node .add (escape_markup (db_name ))
178+ # Show default database with star and green text
179+ if default_db and db_name .lower () == default_db .lower ():
180+ db_label = f"[#4ADE80]* { escape_markup (db_name )} [/]"
181+ else :
182+ db_label = escape_markup (db_name )
183+ db_node = dbs_node .add (db_label )
178184 db_node .data = DatabaseNode (name = db_name )
179185 db_node .allow_expand = True
180186 self ._add_database_object_nodes (db_node , db_name )
@@ -700,3 +706,67 @@ def _display_object_info(self: AppProtocol, object_type: str, info: dict) -> Non
700706 definition = info .get ("definition" )
701707 if definition :
702708 self .query_input .text = f"/*\n { definition } \n */"
709+
710+ def set_default_database (self : AppProtocol , db_name : str ) -> None :
711+ """Set the default database for the current connection.
712+
713+ This is the shared function used by both the USE query handler and
714+ the explorer 'Use as default' action.
715+
716+ Args:
717+ db_name: The database name to set as default.
718+ """
719+ from dataclasses import replace
720+
721+ if not self .current_config :
722+ self .notify ("Not connected" , severity = "error" )
723+ return
724+
725+ self .current_config = replace (self .current_config , database = db_name )
726+ self .notify (f"Switched to database: { db_name } " )
727+ self ._update_status_bar ()
728+ self ._update_database_labels ()
729+
730+ def _update_database_labels (self : AppProtocol ) -> None :
731+ """Update database node labels to show the default database with a star."""
732+ if not self .current_config :
733+ return
734+
735+ default_db = self .current_config .database
736+
737+ # Find the Databases folder and update labels
738+ for conn_node in self .object_tree .root .children :
739+ if self ._get_node_kind (conn_node ) != "connection" :
740+ continue
741+
742+ # Check if this is the active connection
743+ if not (conn_node .data and conn_node .data .config .name == self .current_config .name ):
744+ continue
745+
746+ # Find Databases folder
747+ for child in conn_node .children :
748+ if self ._get_node_kind (child ) == "folder" and child .data .folder_type == "databases" :
749+ # Update each database node
750+ for db_node in child .children :
751+ if self ._get_node_kind (db_node ) == "database" :
752+ db_name = db_node .data .name
753+ if default_db and db_name .lower () == default_db .lower ():
754+ db_node .set_label (f"[#4ADE80]* { escape_markup (db_name )} [/]" )
755+ else :
756+ db_node .set_label (escape_markup (db_name ))
757+ break
758+ break
759+
760+ def action_use_database (self : AppProtocol ) -> None :
761+ """Set the selected database as the default for the current connection."""
762+ node = self .object_tree .cursor_node
763+
764+ if not node or self ._get_node_kind (node ) != "database" :
765+ return
766+
767+ if not self .current_connection :
768+ self .notify ("Not connected" , severity = "error" )
769+ return
770+
771+ db_name = node .data .name
772+ self .set_default_database (db_name )
0 commit comments