add banbanmini backend
This commit is contained in:
67
talkingq-url/api/system_config.py
Normal file
67
talkingq-url/api/system_config.py
Normal file
@@ -0,0 +1,67 @@
|
||||
from fastapi import APIRouter, HTTPException, Depends, Query
|
||||
from typing import Optional, List
|
||||
from pydantic import BaseModel
|
||||
from services.system_config_manager import system_config_manager
|
||||
from api.auth import api_auth
|
||||
|
||||
router = APIRouter(prefix="/api/system-config")
|
||||
|
||||
class SystemConfigResponse(BaseModel):
|
||||
key: str
|
||||
value: str
|
||||
created_at: Optional[float] = None
|
||||
updated_at: Optional[float] = None
|
||||
|
||||
class SystemConfigCreate(BaseModel):
|
||||
key: str
|
||||
value: str
|
||||
|
||||
class SystemConfigUpdate(BaseModel):
|
||||
value: str
|
||||
|
||||
@router.get("/", response_model=List[SystemConfigResponse])
|
||||
async def list_configs(authenticated_device_id: str = Depends(api_auth)):
|
||||
"""列出所有系统配置"""
|
||||
configs = await system_config_manager.list_configs()
|
||||
return [SystemConfigResponse(**c.__dict__) for c in configs]
|
||||
|
||||
@router.get("/{key}", response_model=SystemConfigResponse)
|
||||
async def get_config(key: str, authenticated_device_id: str = Depends(api_auth)):
|
||||
"""获取指定key的系统配置"""
|
||||
config = await system_config_manager.get_config(key)
|
||||
if not config:
|
||||
raise HTTPException(status_code=404, detail="配置不存在")
|
||||
return SystemConfigResponse(**config.__dict__)
|
||||
|
||||
@router.post("/", response_model=SystemConfigResponse)
|
||||
async def create_config(
|
||||
config: SystemConfigCreate,
|
||||
authenticated_device_id: str = Depends(api_auth)
|
||||
):
|
||||
"""新增系统配置"""
|
||||
success = await system_config_manager.create_config(config.key, config.value)
|
||||
if not success:
|
||||
raise HTTPException(status_code=400, detail="创建配置失败")
|
||||
new_config = await system_config_manager.get_config(config.key)
|
||||
return SystemConfigResponse(**new_config.__dict__)
|
||||
|
||||
@router.put("/{key}", response_model=SystemConfigResponse)
|
||||
async def update_config(
|
||||
key: str,
|
||||
config: SystemConfigUpdate,
|
||||
authenticated_device_id: str = Depends(api_auth)
|
||||
):
|
||||
"""更新系统配置"""
|
||||
success = await system_config_manager.update_config(key, config.value)
|
||||
if not success:
|
||||
raise HTTPException(status_code=400, detail="更新配置失败")
|
||||
updated_config = await system_config_manager.get_config(key)
|
||||
return SystemConfigResponse(**updated_config.__dict__)
|
||||
|
||||
@router.delete("/{key}")
|
||||
async def delete_config(key: str, authenticated_device_id: str = Depends(api_auth)):
|
||||
"""删除系统配置"""
|
||||
success = await system_config_manager.delete_config(key)
|
||||
if not success:
|
||||
raise HTTPException(status_code=400, detail="删除配置失败")
|
||||
return {"detail": "删除成功"}
|
||||
Reference in New Issue
Block a user