import asyncio from typing import Optional import time from sqlalchemy import select, update, insert, delete, func from database.models import SystemConfig from services.database_service_base import DatabaseServiceBase from utils.logger import session_logger class SystemConfigManager(DatabaseServiceBase): def __init__(self): super().__init__(service_name="system_config") async def create_config(self, key: str, value: str) -> bool: """新增系统配置""" await self._init_database() db_session = await self.get_session() try: insert_stmt = insert(SystemConfig).values( config_key=key, config_value=value ) await db_session.execute(insert_stmt) await db_session.commit() session_logger.info("system", "system_config", f"新增系统配置: {key}={value}") return True except Exception as e: await db_session.rollback() session_logger.error("system", "system_config", f"新增系统配置失败: {str(e)}") return False finally: await db_session.close() async def get_config(self, key: str) -> Optional[SystemConfig]: """获取系统配置""" await self._init_database() db_session = await self.get_session() try: query = select(SystemConfig).where(SystemConfig.config_key == key) result = await db_session.execute(query) return result.scalars().first() except Exception as e: session_logger.error(key, "system_config", f"查询系统配置失败: {str(e)}") return None finally: await db_session.close() async def update_config(self, key: str, value: str) -> bool: """更新系统配置""" await self._init_database() db_session = await self.get_session() try: query = select(SystemConfig).where(SystemConfig.config_key == key) result = await db_session.execute(query) config = result.scalars().first() if config: update_stmt = ( update(SystemConfig) .where(SystemConfig.config_key == key) .values(config_value=value, updated_at=func.now()) ) await db_session.execute(update_stmt) else: insert_stmt = insert(SystemConfig).values( config_key=key, config_value=value ) await db_session.execute(insert_stmt) await db_session.commit() session_logger.info(key, "system_config", f"系统配置已更新: {value}") return True except Exception as e: await db_session.rollback() session_logger.error(key, "system_config", f"更新系统配置失败: {str(e)}") return False finally: await db_session.close() async def delete_config(self, key: str) -> bool: """删除系统配置""" await self._init_database() db_session = await self.get_session() try: delete_stmt = delete(SystemConfig).where(SystemConfig.config_key == key) await db_session.execute(delete_stmt) await db_session.commit() session_logger.info(key, "system_config", "系统配置已删除") return True except Exception as e: await db_session.rollback() session_logger.error(key, "system_config", f"删除系统配置失败: {str(e)}") return False finally: await db_session.close() async def list_configs(self): """列出所有系统配置""" await self._init_database() db_session = await self.get_session() try: query = select(SystemConfig) result = await db_session.execute(query) return result.scalars().all() except Exception as e: session_logger.error("system_config", "system_config", f"查询所有系统配置失败: {str(e)}") return [] finally: await db_session.close() system_config_manager = SystemConfigManager()