brisonus_app_eq/persistence/data_store_manager_origin.py
2025-02-25 22:36:11 +08:00

69 lines
2.4 KiB
Python

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