mirror of
https://github.com/senju1337/senju.git
synced 2025-12-24 07:39:29 +00:00
feat: add haiku specific methods to the store manager
Refs: OPS-22
This commit is contained in:
parent
ccbe7fd51b
commit
3a36366865
1 changed files with 20 additions and 0 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue