26 lines
1,016 B
Python
26 lines
1,016 B
Python
from uuid import UUID
|
|
|
|
from domain.workspace import Workspace
|
|
from usecase.interface import WorkspaceRepository
|
|
|
|
|
|
class InMemoryWorkspaceRepository(WorkspaceRepository):
|
|
def __init__(self) -> None:
|
|
self._by_id: dict[UUID, Workspace] = {}
|
|
self._user_id_to_workspace_id: dict[UUID, UUID] = {}
|
|
|
|
def get(self, workspace_id: UUID) -> Workspace | None:
|
|
return self._by_id.get(workspace_id)
|
|
|
|
def get_by_user_id(self, user_id: UUID) -> Workspace | None:
|
|
wid = self._user_id_to_workspace_id.get(user_id)
|
|
if wid is None:
|
|
return None
|
|
return self._by_id.get(wid)
|
|
|
|
def save(self, workspace: Workspace) -> None:
|
|
existing_wid = self._user_id_to_workspace_id.get(workspace.user_id)
|
|
if existing_wid is not None and existing_wid != workspace.workspace_id:
|
|
self._by_id.pop(existing_wid, None)
|
|
self._by_id[workspace.workspace_id] = workspace
|
|
self._user_id_to_workspace_id[workspace.user_id] = workspace.workspace_id
|