"""仅用于管理两项语义设置；凭据通过stdin，不输出或归档。"""
import configparser
import subprocess

def mysql(sql):
    conf = configparser.ConfigParser(interpolation=None)
    conf.read('/opt/cloudreve/data/conf.ini')
    db = conf['Database']
    options = '[client]\nuser=' + db['User'] + '\npassword=' + db['Password'] + '\n'
    cmd = ['docker', 'exec', '-i', '1Panel-mysql-5qkq', 'mysql', '--defaults-extra-file=/dev/stdin', '--default-character-set=utf8mb4', '--protocol=TCP', '-h', '127.0.0.1', '-D', db['Name'], '--batch', '--skip-column-names', '-e', sql]
    result = subprocess.run(cmd, input=options, text=True, capture_output=True, timeout=60)
    if result.returncode:
        raise RuntimeError('数据库操作失败，请检查私密配置和服务状态')
    return result.stdout.rstrip('\n')

def sql_hex(value):
    return 'CONVERT(0x' + value.encode('utf-8').hex() + ' USING utf8mb4)'
