feat(mysql): 添加MySQL数据库支持
- 在requirements.txt中添加aiomysql依赖 - 在config.toml中添加MySQL配置块 - 新增MySQLModel配置模型 - 实现MySQLManager单例管理器 - 更新Config类以支持MySQL配置加载 - 在__init__.py中导出mysql_manager - 改进ConfigError异常处理
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user