"""
SQL安全工具模块
提供SQL注入防护相关的工具函数
"""


def escape_like_pattern(pattern: str) -> str:
    """
    转义SQL LIKE模式中的特殊字符，防止SQL注入

    Args:
        pattern: 用户输入的搜索模式

    Returns:
        转义后的安全模式字符串
    """
    if not pattern:
        return pattern
    # 转义反斜杠必须在最前面
    pattern = pattern.replace("\\", "\\\\")
    # 转义LIKE通配符
    pattern = pattern.replace("%", "\\%")
    pattern = pattern.replace("_", "\\_")
    return pattern


def safe_like_param(value: str, prefix: bool = True, suffix: bool = True) -> str:
    """
    创建安全的LIKE参数值

    Args:
        value: 用户输入的搜索值
        prefix: 是否在前面添加%通配符
        suffix: 是否在后面添加%通配符

    Returns:
        转义并添加通配符后的安全参数值
    """
    if not value:
        return value

    escaped = escape_like_pattern(value)

    if prefix and suffix:
        return f"%{escaped}%"
    elif prefix:
        return f"%{escaped}"
    elif suffix:
        return f"{escaped}%"
    else:
        return escaped
