import sqlite3 from fastapi import APIRouter, Depends, HTTPException from app.dependencies.admin_auth import get_current_admin from app.schemas.local_config_schema import LocalConfigPutRequest, LocalConfigResponse from app.services import local_config_service router = APIRouter(prefix="/api/admin/local-config", tags=["本地配置"]) @router.get("", response_model=LocalConfigResponse) def get_local_config(_admin=Depends(get_current_admin)): result = local_config_service.get_all() return LocalConfigResponse(data=result) @router.put("", response_model=LocalConfigResponse) def update_local_config( body: LocalConfigPutRequest, _admin=Depends(get_current_admin), ): data = {} for field, value in body.model_dump(exclude_none=True).items(): if isinstance(value, bool): data[field] = "true" if value else "false" else: data[field] = str(value) try: local_config_service.upsert_many(data) except sqlite3.Error: raise HTTPException(status_code=500, detail="配置保存失败,请稍后重试") return LocalConfigResponse(message="保存成功")