import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) from typing import Dict, List, Optional from persistence.data_store import DataStore class DataStoreManager: _instance = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) cls._instance._store = DataStore() return cls._instance @property def current_project(self) -> Optional[str]: return self._store.current_project @property def current_param(self) -> Optional[str]: return self._store.current_param def create_project(self, name: str, description: str = "") -> bool: """创建或更新项目""" # 如果项目已存在,先获取现有数据 existing_data = None if self._store._project_exists(name): existing_data = self._store.load_project(name) # 保存项目,保留现有参数数据 result = self._store.save_project(name, description) # 如果是更新现有项目,需要恢复参数数据 if result and existing_data and hasattr(existing_data, 'params'): updated_project = self._store.load_project(name) if updated_project: updated_project.params = existing_data.params self._store._save_project_data(name, updated_project) return result def save_param(self, project_name: str, param_name: str, channel_settings: Dict[int, Dict], description: str = "") -> bool: """保存参数配置""" return self._store.add_param_to_project(project_name, param_name, channel_settings, description) def get_project(self, name: str) -> Optional[Dict]: """获取项目数据""" project_data = self._store.load_project(name) return project_data.__dict__ if project_data else None def get_projects(self) -> List[str]: """获取所有项目列表""" return self._store.list_projects() def remove_project(self, name: str) -> bool: """删除项目""" return self._store.delete_project(name) @classmethod def get_instance(cls) -> 'DataStoreManager': """获取 DataStoreManager 实例""" if cls._instance is None: cls._instance = DataStoreManager() return cls._instance