champ-chatbot / classes /session_tracker.py
qyle's picture
deployment
8b9e569 verified
import time
from typing import List
from constants import FOUR_HOURS
class SessionTracker:
def __init__(self) -> None:
self.session_timestamp_map = dict()
def update_session(self, session_id: str):
self.session_timestamp_map[session_id] = time.time()
def delete_session(self, session_id: str):
if session_id in self.session_timestamp_map:
del self.session_timestamp_map[session_id]
def delete_inactive_sessions(self) -> List[str]:
now = time.time()
sessions_to_delete = [
sid
for sid, last_t in self.session_timestamp_map.items()
if now - last_t > FOUR_HOURS
]
for session_id in sessions_to_delete:
del self.session_timestamp_map[session_id]
return sessions_to_delete
def delete_oldest_session(self) -> str | None:
if len(self.session_timestamp_map) == 0:
return None
oldest_session_id = min(self.session_timestamp_map.items(), key=lambda x: x[1])[
0
]
self.delete_session(oldest_session_id)
return oldest_session_id