Spaces:
Running
Running
| 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() | |