""" 配置服务 """ from typing import List, Optional from sqlalchemy.orm import Session from fastapi import HTTPException, status from app.models.config import SDKConfig, SystemConfig class ConfigService: """配置服务""" @staticmethod def get_sdk_configs(db: Session) -> List[SDKConfig]: """获取所有SDK配置""" return db.query(SDKConfig).order_by(SDKConfig.created_at.desc()).all() @staticmethod def get_sdk_config(db: Session, config_id: int) -> Optional[SDKConfig]: """获取指定SDK配置""" return db.query(SDKConfig).filter(SDKConfig.id == config_id).first() @staticmethod def get_default_sdk_config(db: Session) -> Optional[SDKConfig]: """获取默认SDK配置""" return db.query(SDKConfig).filter(SDKConfig.is_default == True).first() @staticmethod def create_sdk_config(db: Session, config_data: dict) -> SDKConfig: """ 创建SDK配置 Args: db: 数据库会话 config_data: 配置数据 Returns: 新配置对象 """ config = SDKConfig(**config_data) db.add(config) db.commit() db.refresh(config) return config @staticmethod def update_sdk_config( db: Session, config_id: int, config_data: dict ) -> SDKConfig: """ 更新SDK配置 Args: db: 数据库会话 config_id: 配置ID config_data: 更新数据 Returns: 更新后的配置对象 """ config = db.query(SDKConfig).filter(SDKConfig.id == config_id).first() if not config: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="配置不存在" ) # 更新字段 for key, value in config_data.items(): if value is not None and hasattr(config, key): setattr(config, key, value) db.commit() db.refresh(config) return config @staticmethod def delete_sdk_config(db: Session, config_id: int): """ 删除SDK配置 Args: db: 数据库会话 config_id: 配置ID """ config = db.query(SDKConfig).filter(SDKConfig.id == config_id).first() if not config: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="配置不存在" ) db.delete(config) db.commit() @staticmethod def set_default_config(db: Session, config_id: int): """ 设置默认配置 Args: db: 数据库会话 config_id: 配置ID """ config = db.query(SDKConfig).filter(SDKConfig.id == config_id).first() if not config: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="配置不存在" ) # 取消其他配置的默认状态 db.query(SDKConfig).update({SDKConfig.is_default: False}) # 设置当前配置为默认 config.is_default = True db.commit() db.refresh(config) @staticmethod def get_system_config(db: Session, key: str) -> Optional[str]: """获取系统配置值""" config = db.query(SystemConfig).filter(SystemConfig.config_key == key).first() return config.config_value if config else None @staticmethod def set_system_config(db: Session, key: str, value: str, config_name: str = None, current_db_type: str = None, description: str = None, is_active: bool = True, auto_commit: bool = True): """设置系统配置""" config = db.query(SystemConfig).filter(SystemConfig.config_key == key).first() if config: config.config_value = value config.is_active = is_active if config_name: config.config_name = config_name if current_db_type: config.current_db_type = current_db_type if description: config.description = description else: config = SystemConfig( config_key=key, config_value=value, config_name=config_name or key, current_db_type=current_db_type, is_active=is_active, description=description ) db.add(config) if auto_commit: db.commit() @staticmethod def get_all_system_configs(db: Session) -> dict: """获取所有系统配置""" configs = db.query(SystemConfig).all() return {config.config_key: config.config_value for config in configs}