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