From c263c587406ff41c1ff324d6deb14ff8f57d7922 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Mon, 10 Mar 2025 15:45:41 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web_ui/api/configure/__init__.py | 14 ++++++++++++++ .../web_ui/api/configure/data_source.py | 18 ++++++++++++++++++ zhenxun/services/db_context.py | 4 ++-- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 zhenxun/builtin_plugins/web_ui/api/configure/data_source.py diff --git a/zhenxun/builtin_plugins/web_ui/api/configure/__init__.py b/zhenxun/builtin_plugins/web_ui/api/configure/__init__.py index 9b02c3e4..69c66349 100644 --- a/zhenxun/builtin_plugins/web_ui/api/configure/__init__.py +++ b/zhenxun/builtin_plugins/web_ui/api/configure/__init__.py @@ -8,6 +8,7 @@ import nonebot from zhenxun.configs.config import BotConfig, Config from ...base_model import Result +from .data_source import test_db_connection from .model import Setting router = APIRouter(prefix="/configure") @@ -48,3 +49,16 @@ async def _(setting: Setting) -> Result: Config.set_config("web-ui", "password", setting.password) env_file.write_text(env_text, encoding="utf-8") return Result.ok(info="基础配置设置完成!") + + +@router.get( + "/test_db", + response_model=Result, + response_class=JSONResponse, + description="设置基础配置", +) +async def _(db_url: str) -> Result: + result = await test_db_connection(db_url) + if isinstance(result, str): + return Result.fail(result) + return Result.ok(info="数据库连接成功!") diff --git a/zhenxun/builtin_plugins/web_ui/api/configure/data_source.py b/zhenxun/builtin_plugins/web_ui/api/configure/data_source.py new file mode 100644 index 00000000..ad8c73c9 --- /dev/null +++ b/zhenxun/builtin_plugins/web_ui/api/configure/data_source.py @@ -0,0 +1,18 @@ +from tortoise import Tortoise + + +async def test_db_connection(db_url: str) -> bool | str: + try: + # 初始化 Tortoise ORM + await Tortoise.init( + db_url=db_url, + modules={"models": ["__main__"]}, # 这里不需要实际模型 + ) + # 测试连接 + await Tortoise.get_connection("default").execute_query("SELECT 1") + return True + except Exception as e: + return str(e) + finally: + # 关闭连接 + await Tortoise.close_connections() diff --git a/zhenxun/services/db_context.py b/zhenxun/services/db_context.py index 26f8e052..c774f912 100644 --- a/zhenxun/services/db_context.py +++ b/zhenxun/services/db_context.py @@ -54,9 +54,9 @@ async def init(): # raise DbUrlIsNode("数据库配置为空,请在.env.dev中配置DB_URL...") error = f""" ********************************************************************** -🌟 ****************************** 配置为空 ************************** 🌟 +🌟 **************************** 配置为空 ************************* 🌟 🚀 请打开 WebUi 进行基础配置 🚀 -🌐 配置地址:http://{driver.config.host}:{driver.config.port}/configure 🌐 +🌐 配置地址:http://{driver.config.host}:{driver.config.port}/#/configure 🌐 *********************************************************************** *********************************************************************** """