From d076d249c0e8cc17533d58e8b4289c77b1a59e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A6=82=E5=A8=81?= Date: Fri, 22 Aug 2025 00:18:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/config/init.json | 4 ++-- backend/app/core/config.py | 24 ++++++++++++++++++++++++ backend/app/main.py | 23 +++++++++++------------ backend/app/models/schemas/system.py | 10 +++++----- 4 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 backend/app/core/config.py diff --git a/backend/app/config/init.json b/backend/app/config/init.json index 4266856..8cfcddf 100644 --- a/backend/app/config/init.json +++ b/backend/app/config/init.json @@ -1,6 +1,6 @@ { - "is_init": false, - "db_type": "sqlite", + "is_init": true, + "db_type": "sqlite_3", "mysql": { "host": "", "port": "", diff --git a/backend/app/core/config.py b/backend/app/core/config.py new file mode 100644 index 0000000..460db18 --- /dev/null +++ b/backend/app/core/config.py @@ -0,0 +1,24 @@ +import json +from pathlib import Path +import asyncio + +CONFIG_PATH = Path(__file__).parent.parent / "config" / "init.json" + + +def _sync_load_config() -> dict: + with CONFIG_PATH.open("r", encoding="utf-8") as f: + return json.load(f) + + +def _sync_save_config(config_data: dict): + with CONFIG_PATH.open("w", encoding="utf-8") as f: + json.dump(config_data, f, indent=4, ensure_ascii=False) + + +# 异步接口 +async def load_init_config() -> dict: + return await asyncio.to_thread(_sync_load_config) + + +async def save_init_config(config_data: dict): + await asyncio.to_thread(_sync_save_config, config_data) diff --git a/backend/app/main.py b/backend/app/main.py index da0f2d7..6e23629 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -4,16 +4,7 @@ import json from fastapi import FastAPI from pathlib import Path from models.schemas.system import InitStatusResponse, InitConfigRequest - - -# 响应类型 - - -def load_init_config(): - """读取配置文件""" - config_path = Path(__file__).parent / "config" / "init.json" - with open(config_path, "r", encoding="utf-8") as f: - return json.load(f) +from core.config import load_init_config, save_init_config def create_app(): @@ -30,7 +21,7 @@ def create_app(): response_model=InitStatusResponse, ) async def check_init(): - init_config = load_init_config() + init_config = await load_init_config() is_init = init_config.get("is_init") return InitStatusResponse(data=is_init) @@ -41,7 +32,15 @@ def create_app(): response_model=InitStatusResponse, ) async def init_system(request: InitConfigRequest): - return InitStatusResponse() + init_config = await load_init_config() + if init_config.get('is_init'): + return InitStatusResponse(data=True) + init_config["db_type"] = request.db_type + if request.db_type == "mysql": + pass + init_config["is_init"] = True + await save_init_config(init_config) + return InitStatusResponse(data=True) return app diff --git a/backend/app/models/schemas/system.py b/backend/app/models/schemas/system.py index 99b942d..4373d6c 100644 --- a/backend/app/models/schemas/system.py +++ b/backend/app/models/schemas/system.py @@ -8,12 +8,12 @@ class BaseResponse(BaseModel): class InitConfigRequest(BaseModel): db_type: str - db_host: str | None - db_port: str | None - db_user: str | None - db_password: str | None - db_name: str | None admin_password: str + db_host: str | None = None + db_port: str | None = None + db_user: str | None = None + db_password: str | None = None + db_name: str | None = None class InitStatusResponse(BaseResponse):