feat: 初始化接口

This commit is contained in:
李如威 2025-08-22 00:18:17 +08:00
parent e668cc533b
commit d076d249c0
4 changed files with 42 additions and 19 deletions

View File

@ -1,6 +1,6 @@
{
"is_init": false,
"db_type": "sqlite",
"is_init": true,
"db_type": "sqlite_3",
"mysql": {
"host": "",
"port": "",

View File

@ -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)

View File

@ -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

View File

@ -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):