54 lines
1.8 KiB
Python
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 |