ref #13: in-memory metadata repositories (S02)
This commit is contained in:
parent
5381c997e2
commit
6fe484c44c
4 changed files with 236 additions and 0 deletions
26
repository/workspace.py
Normal file
26
repository/workspace.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue