mesa-react / backend /app /services /session_store.py
Guilherme Silberfarb Costa
Initial commit for HF Space
d6c9678
from __future__ import annotations
import shutil
import tempfile
import uuid
from pathlib import Path
from fastapi import HTTPException
from app.models.session import SessionState
class SessionStore:
def __init__(self) -> None:
self._sessions: dict[str, SessionState] = {}
def create(self) -> SessionState:
session_id = uuid.uuid4().hex
workdir = Path(tempfile.mkdtemp(prefix=f"mesa_{session_id[:8]}_"))
state = SessionState(session_id=session_id, workdir=workdir)
self._sessions[session_id] = state
return state
def get(self, session_id: str) -> SessionState:
state = self._sessions.get(session_id)
if state is None:
raise HTTPException(status_code=404, detail="Sessao nao encontrada")
return state
def delete(self, session_id: str) -> None:
state = self._sessions.pop(session_id, None)
if state is None:
return
shutil.rmtree(state.workdir, ignore_errors=True)
session_store = SessionStore()