125 lines
3.3 KiB
Python
125 lines
3.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
||
from sqlalchemy.orm import Session
|
||
from typing import Dict, Any, List, Optional
|
||
|
||
from app.models.database import get_db
|
||
from app.services.config_service import ConfigService
|
||
from app.routes.user import get_current_active_user
|
||
|
||
router = APIRouter(prefix="/config", tags=["config"])
|
||
|
||
|
||
@router.get("/{config_key}")
|
||
async def get_config(
|
||
config_key: str,
|
||
db: Session = Depends(get_db),
|
||
current_user: dict = Depends(get_current_active_user)
|
||
):
|
||
"""获取配置
|
||
|
||
Args:
|
||
config_key: 配置键
|
||
db: 数据库会话
|
||
current_user: 当前活跃用户
|
||
|
||
Returns:
|
||
配置信息
|
||
"""
|
||
config = ConfigService.get_config(db, config_key)
|
||
if not config:
|
||
raise HTTPException(status_code=404, detail="配置不存在")
|
||
return {"key": config_key, "value": config}
|
||
|
||
|
||
@router.post("/{config_key}")
|
||
async def set_config(
|
||
config_key: str,
|
||
config_data: Dict[str, Any],
|
||
db: Session = Depends(get_db),
|
||
current_user: dict = Depends(get_current_active_user)
|
||
):
|
||
"""设置配置
|
||
|
||
Args:
|
||
config_key: 配置键
|
||
config_data: 配置数据,包含value、type、service_id、description等字段
|
||
db: 数据库会话
|
||
current_user: 当前活跃用户
|
||
|
||
Returns:
|
||
设置结果
|
||
"""
|
||
success = ConfigService.set_config(
|
||
db=db,
|
||
config_key=config_key,
|
||
config_value=config_data.get("value"),
|
||
config_type=config_data.get("type", "system"),
|
||
service_id=config_data.get("service_id"),
|
||
description=config_data.get("description", "")
|
||
)
|
||
if not success:
|
||
raise HTTPException(status_code=400, detail="设置配置失败")
|
||
return {"message": "设置配置成功"}
|
||
|
||
|
||
@router.get("/service/{service_id}")
|
||
async def get_service_configs(
|
||
service_id: str,
|
||
db: Session = Depends(get_db),
|
||
current_user: dict = Depends(get_current_active_user)
|
||
):
|
||
"""获取服务配置
|
||
|
||
Args:
|
||
service_id: 服务ID
|
||
db: 数据库会话
|
||
current_user: 当前活跃用户
|
||
|
||
Returns:
|
||
服务配置列表
|
||
"""
|
||
configs = ConfigService.get_service_configs(db, service_id)
|
||
return {"service_id": service_id, "configs": configs}
|
||
|
||
|
||
@router.delete("/{config_key}")
|
||
async def delete_config(
|
||
config_key: str,
|
||
db: Session = Depends(get_db),
|
||
current_user: dict = Depends(get_current_active_user)
|
||
):
|
||
"""删除配置
|
||
|
||
Args:
|
||
config_key: 配置键
|
||
db: 数据库会话
|
||
current_user: 当前活跃用户
|
||
|
||
Returns:
|
||
删除结果
|
||
"""
|
||
success = ConfigService.delete_config(db, config_key)
|
||
if not success:
|
||
raise HTTPException(status_code=400, detail="删除配置失败")
|
||
return {"message": "删除配置成功"}
|
||
|
||
|
||
@router.get("/")
|
||
async def get_all_configs(
|
||
config_type: Optional[str] = None,
|
||
db: Session = Depends(get_db),
|
||
current_user: dict = Depends(get_current_active_user)
|
||
):
|
||
"""获取所有配置
|
||
|
||
Args:
|
||
config_type: 配置类型,可选
|
||
db: 数据库会话
|
||
current_user: 当前活跃用户
|
||
|
||
Returns:
|
||
配置列表
|
||
"""
|
||
configs = ConfigService.get_all_configs(db, config_type)
|
||
return {"configs": configs}
|