Spaces:
Sleeping
Sleeping
Create session_manager.py
Browse files- session_manager.py +38 -0
session_manager.py
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import uuid
|
3 |
+
from datetime import datetime
|
4 |
+
from pathlib import Path
|
5 |
+
|
6 |
+
class SessionManager:
|
7 |
+
def __init__(self):
|
8 |
+
self.sessions_dir = Path("data/sessions")
|
9 |
+
self.sessions_dir.mkdir(parents=True, exist_ok=True)
|
10 |
+
|
11 |
+
def create_session(self) -> str:
|
12 |
+
"""Create new empty session and return ID"""
|
13 |
+
session_id = str(uuid.uuid4())
|
14 |
+
self.save_session(session_id, {
|
15 |
+
"created_at": datetime.now().isoformat(),
|
16 |
+
"history": []
|
17 |
+
})
|
18 |
+
return session_id
|
19 |
+
|
20 |
+
def save_session(self, session_id: str, data: dict):
|
21 |
+
"""Save session data to file"""
|
22 |
+
with open(self.sessions_dir / f"{session_id}.json", "w") as f:
|
23 |
+
json.dump(data, f, indent=2)
|
24 |
+
|
25 |
+
def load_session(self, session_id: str) -> dict:
|
26 |
+
"""Load session data or create new if not found"""
|
27 |
+
try:
|
28 |
+
with open(self.sessions_dir / f"{session_id}.json") as f:
|
29 |
+
return json.load(f)
|
30 |
+
except FileNotFoundError:
|
31 |
+
return self.create_session()
|
32 |
+
|
33 |
+
def clear_session(self, session_id: str):
|
34 |
+
"""Reset session while keeping ID"""
|
35 |
+
self.save_session(session_id, {
|
36 |
+
"created_at": datetime.now().isoformat(),
|
37 |
+
"history": []
|
38 |
+
})
|