from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.models.config import ConfigDB, ConfigInfo from app.models.user import UserDB from app.models.database import get_db from app.api.deps import get_admin_user from app.core.response import success_response, error_response, ResponseModel router = APIRouter() @router.get("", response_model=ResponseModel) async def get_configs( db: Session = Depends(get_db) ): """获取所有配置""" configs = db.query(ConfigDB).all() # 转换为数组格式 config_list = [ ConfigInfo.model_validate(config) for config in configs ] return success_response(data=config_list) @router.post("", response_model=ResponseModel) async def create_config( config: ConfigInfo, db: Session = Depends(get_db), admin: UserDB = Depends(get_admin_user) # 仅管理员可操作 ): """创建配置""" # 检查key是否已存在 exists = db.query(ConfigDB).filter(ConfigDB.key == config.key).first() if exists: return error_response(code=400, message=f"配置项 {config.key} 已存在") # 创建新配置 db_config = ConfigDB( key=config.key, value=config.value ) try: db.add(db_config) db.commit() db.refresh(db_config) return success_response( message="配置创建成功", data=ConfigInfo.model_validate(db_config) ) except Exception as e: db.rollback() return error_response(code=500, message=f"创建失败: {str(e)}")