feat: add haiku specific methods to the store manager

Refs: OPS-22
This commit is contained in:
Christoph J. Scherr 2025-02-25 17:42:11 +01:00
parent ccbe7fd51b
commit 3a36366865
No known key found for this signature in database
GPG key ID: 9EB784BB202BB7BB

View file

@ -5,6 +5,8 @@ from logging import Logger
from tinydb.queries import QueryImpl from tinydb.queries import QueryImpl
from senju.haiku import Haiku
DEFAULT_DB_PATH: Path = Path("/var/lib/senju.json") DEFAULT_DB_PATH: Path = Path("/var/lib/senju.json")
@ -29,3 +31,21 @@ class StoreManager:
def _save(self, data: dict) -> int: def _save(self, data: dict) -> int:
return self._db.insert(data) return self._db.insert(data)
def load_haiku(self, key: int) -> Optional[Haiku]:
raw_haiku: dict | None = self._load(key)
if raw_haiku is None:
return None
h = Haiku(**raw_haiku)
return h
def save_haiku(self, data: Haiku) -> int:
return self._save(data.__dict__)
def load_latest_haiku(self) -> Optional[Haiku]:
try:
id = self._db.all()[-1].doc_id
self.load_haiku(id)
except IndexError as e:
self.logger.error(f"The database seems to be empty: {e}")
return None