Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ class User:
id: int
name: str
email: Optional[str] = None
meta: Dict[str, Any] = {}
meta: Dict[str, Any] = field(default_factory=dict)
28 changes: 18 additions & 10 deletions repo.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
import time
import threading
from typing import Any, Dict



class InMemoryRepo:
def __init__(self):
self.storage = {}
self.last_saved_at = None
self.storage : Dict[Any, Any] = {}
self.last_saved_at : float | None = None
self._lock = threading.Lock()

def save(self, key, value):
time.sleep(0.05)
self.storage[key] = value
self.last_saved_at = time.time()
def save(self, key: Any, value: Any) -> None:
with self._lock:
time.sleep(0.05)
self.storage[key] = value
self.last_saved_at = time.time()

def get(self, key, default=None):
return self.storage.get(key, default)
def all(self) -> Dict[Any, Any]:
with self._lock:
return dict(self._storage)

def all(self):
return self.storage

@property
def last_saved_at(self) -> float | None:
return self._last_saved_at