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()