brisonus_app_eq/persistence/data_store_manager.py

54 lines
1.8 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:
"""创建新项目"""
return self._store.save_project(name, description)
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