diff options
| author | Eddy Pedroni <epedroni@pm.me> | 2025-07-15 22:54:55 +0200 | 
|---|---|---|
| committer | Eddy Pedroni <epedroni@pm.me> | 2025-07-15 22:54:55 +0200 | 
| commit | 1d42bfe5f7b3c671fc5b50e716c5e8aa68728fb3 (patch) | |
| tree | 0645cba6faaf0e20926a03c3d5e2dd4d878c1d7b /solo-tool-project/src/solo_tool | |
| parent | fb63f6b5912171595065ea7498d1d770a175d1d9 (diff) | |
Refactor session manager to be independent of the underlying storage
Diffstat (limited to 'solo-tool-project/src/solo_tool')
| -rw-r--r-- | solo-tool-project/src/solo_tool/session_manager.py | 55 | 
1 files changed, 34 insertions, 21 deletions
| diff --git a/solo-tool-project/src/solo_tool/session_manager.py b/solo-tool-project/src/solo_tool/session_manager.py index cd5ebf7..4fae19f 100644 --- a/solo-tool-project/src/solo_tool/session_manager.py +++ b/solo-tool-project/src/solo_tool/session_manager.py @@ -1,30 +1,43 @@ +from glob import glob  import json +from pathlib import Path  from . import SoloTool -def loadSession(file: str, songPool: str, player=None) -> SoloTool: -    with open(file, "r") as f: -        session = json.load(f) +class FileSystemSessionManager: +    def __init__(self, songPool: str, sessionPath: str): +        self._songPool = Path(songPool) +        self._sessionPath = Path(sessionPath) -    st = SoloTool(songPool, player=player) +    def getSessions(self) -> list[str]: +        return [Path(f).stem for f in glob(f"{self._sessionPath}/*.json")] -    for i, entry in enumerate(session): -        songPath = entry["path"] -        keyPoints = entry["key_points"] +    def loadSession(self, key: str, player=None) -> SoloTool: +        with open(self._sessionPath / f"{key}.json", "r") as f: +            session = json.load(f) -        st.addSong(songPath) -        st._keyPoints[i] = keyPoints +        st = SoloTool(self._songPool, player=player) -    return st -         -def saveSession(soloTool: SoloTool, file: str) -> None: -    session = [] +        for i, entry in enumerate(session): +            songPath = entry["path"] +            keyPoints = entry["key_points"] -    for i, song in enumerate(soloTool.songs): -        entry = { -            "path": song, -            "key_points" : soloTool._keyPoints[i] -        } -        session.append(entry) +            st.addSong(songPath) +            st._keyPoints[i] = keyPoints -    with open(file, "w") as f: -        json.dump(session, f) +        return st + +    def saveSession(self, soloTool: SoloTool, key: str) -> None: +        session = [] + +        for i, song in enumerate(soloTool.songs): +            entry = { +                "path": song, +                "key_points" : soloTool._keyPoints[i] +            } +            session.append(entry) + +        with open(self._sessionPath / f"{key}.json", "w") as f: +            json.dump(session, f) + +def getSessionManager(songPool: str, sessionPath: str) -> FileSystemSessionManager: +    return FileSystemSessionManager(songPool, sessionPath) | 
