"""MySQL MCP工具全局管理器"""

from typing import Optional
from ..utils.logger import get_logger

logger = get_logger("mysql_tool_manager")

# Try to import MySQL MCP tool
try:
    from th_agenter.services.mcp.mysql_mcp import MySQLMCPTool
    MYSQL_TOOL_AVAILABLE = True
except ImportError as e:
    logger.warning(f"MySQL MCP tool not available: {str(e)}. MySQL functionality will be disabled.")
    MySQLMCPTool = None
    MYSQL_TOOL_AVAILABLE = False


class MySQLToolManager:
    """MySQL工具全局单例管理器"""
    
    _instance: Optional['MySQLToolManager'] = None
    _mysql_tool: Optional[MySQLMCPTool] = None
    
    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance
    
    @property
    def mysql_tool(self) -> Optional[MySQLMCPTool]:
        """获取MySQL工具实例"""
        if not MYSQL_TOOL_AVAILABLE:
            return None
            
        if self._mysql_tool is None:
            self._mysql_tool = MySQLMCPTool()
            logger.info("创建全局MySQL工具实例")
        return self._mysql_tool
    
    def get_tool(self) -> Optional[MySQLMCPTool]:
        """获取MySQL工具实例（别名方法）"""
        return self.mysql_tool


# 全局实例
mysql_tool_manager = MySQLToolManager()


def get_mysql_tool() -> MySQLMCPTool:
    """获取全局MySQL工具实例"""
    return mysql_tool_manager.get_tool()