feat(mysql): 添加MySQL数据库支持

- 在requirements.txt中添加aiomysql依赖
- 在config.toml中添加MySQL配置块
- 新增MySQLModel配置模型
- 实现MySQLManager单例管理器
- 更新Config类以支持MySQL配置加载
- 在__init__.py中导出mysql_manager
- 改进ConfigError异常处理
This commit is contained in:
2026-02-28 16:59:52 +08:00
parent 0bca97424b
commit ed4da64a7a
7 changed files with 203 additions and 13 deletions

View File

@@ -7,7 +7,7 @@ from pathlib import Path
import tomllib
from pydantic import ValidationError
from .config_models import ConfigModel, NapCatWSModel, BotModel, RedisModel, DockerModel, ImageManagerModel
from .config_models import ConfigModel, NapCatWSModel, BotModel, RedisModel, DockerModel, ImageManagerModel, MySQLModel
from .utils.logger import ModuleLogger
from .utils.exceptions import ConfigError, ConfigNotFoundError, ConfigValidationError
@@ -59,9 +59,9 @@ class Config:
error_details.append(error_msg)
validation_error = ConfigValidationError(
message="配置验证失败",
original_error=e
message="配置验证失败"
)
validation_error.original_error = e
self.logger.error("配置验证失败,请检查 `config.toml` 文件中的以下错误:")
for detail in error_details:
@@ -71,17 +71,17 @@ class Config:
raise validation_error
except tomllib.TOMLDecodeError as e:
error = ConfigError(
message=f"TOML解析错误: {str(e)}",
original_error=e
message=f"TOML解析错误: {str(e)}"
)
error.original_error = e
self.logger.error(f"加载配置文件时发生TOML解析错误: {error.message}")
self.logger.log_custom_exception(error)
raise error
except Exception as e:
error = ConfigError(
message=f"加载配置文件时发生未知错误: {str(e)}",
original_error=e
message=f"加载配置文件时发生未知错误: {str(e)}"
)
error.original_error = e
self.logger.exception(f"加载配置文件时发生未知错误: {error.message}")
self.logger.log_custom_exception(error)
raise error
@@ -107,6 +107,13 @@ class Config:
获取 Redis 配置
"""
return self._model.redis
@property
def mysql(self) -> MySQLModel:
"""
获取 MySQL 配置
"""
return self._model.mysql
@property
def docker(self) -> DockerModel: