import contextlib from collections.abc import Iterator from sqlalchemy.orm import Session class SessionMixin: _session: Session | None = None @contextlib.contextmanager def _set_session(self, session: Session) -> Iterator[None]: """Set the current session.""" self._session = session try: yield finally: self._session = None def _get_session(self) -> Session: """Get the current session.""" if self._session is None: raise LookupError("Session is not started.") return self._session def _has_session(self) -> bool: """Check if the current session is started.""" return self._session is not None