Files
algorithm/backend/app/routes/config.py

125 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}