admin_local_config_router.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import sqlite3
  2. from fastapi import APIRouter, Depends, HTTPException
  3. from app.dependencies.admin_auth import get_current_admin
  4. from app.schemas.local_config_schema import LocalConfigPutRequest, LocalConfigResponse
  5. from app.services import local_config_service
  6. router = APIRouter(prefix="/api/admin/local-config", tags=["本地配置"])
  7. @router.get("", response_model=LocalConfigResponse)
  8. def get_local_config(_admin=Depends(get_current_admin)):
  9. result = local_config_service.get_all()
  10. return LocalConfigResponse(data=result)
  11. @router.put("", response_model=LocalConfigResponse)
  12. def update_local_config(
  13. body: LocalConfigPutRequest,
  14. _admin=Depends(get_current_admin),
  15. ):
  16. data = {}
  17. for field, value in body.model_dump(exclude_none=True).items():
  18. if isinstance(value, bool):
  19. data[field] = "true" if value else "false"
  20. else:
  21. data[field] = str(value)
  22. try:
  23. local_config_service.upsert_many(data)
  24. except sqlite3.Error:
  25. raise HTTPException(status_code=500, detail="配置保存失败,请稍后重试")
  26. return LocalConfigResponse(message="保存成功")