home
·
contact
·
privacy
projects
/
plomtask
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
704c00a
)
Refactor BaseModel.by_id (integrating ._by_id).
author
Christian Heller
<c.heller@plomlompom.de>
Wed, 1 May 2024 15:42:51 +0000
(17:42 +0200)
committer
Christian Heller
<c.heller@plomlompom.de>
Wed, 1 May 2024 15:42:51 +0000
(17:42 +0200)
plomtask/db.py
patch
|
blob
|
history
diff --git
a/plomtask/db.py
b/plomtask/db.py
index 34b5887c0204532ea6a32ade0eed6ccea92fbbaa..8e5529062ae18c60a2ed222deb27305f9c18e54c 100644
(file)
--- a/
plomtask/db.py
+++ b/
plomtask/db.py
@@
-179,27
+179,26
@@
class BaseModel(Generic[BaseModelId]):
obj.cache()
return obj
obj.cache()
return obj
- @classmethod
- def _by_id(cls, db_conn: DatabaseConnection,
- id_: BaseModelId) -> Self | None:
- """Return instance found by ID, or None, and if from cache or not."""
- obj = cls.get_cached(id_)
- if not obj:
- for row in db_conn.row_where(cls.table_name, 'id', id_):
- obj = cls.from_table_row(db_conn, row)
- obj.cache()
- break
- return obj
-
@classmethod
def by_id(cls, db_conn: DatabaseConnection,
id_: BaseModelId | None,
# pylint: disable=unused-argument
create: bool = False) -> Self:
@classmethod
def by_id(cls, db_conn: DatabaseConnection,
id_: BaseModelId | None,
# pylint: disable=unused-argument
create: bool = False) -> Self:
- """Retrieve by id_, on failure throw NotFoundException."""
+ """Retrieve by id_, on failure throw NotFoundException.
+
+ First try to get from cls.cache_, only then check DB; if found,
+ put into cache.
+
+ If create=True, make anew (but do not cache yet).
+ """
obj = None
if id_ is not None:
obj = None
if id_ is not None:
- obj = cls._by_id(db_conn, id_)
+ obj = cls.get_cached(id_)
+ if not obj:
+ for row in db_conn.row_where(cls.table_name, 'id', id_):
+ obj = cls.from_table_row(db_conn, row)
+ obj.cache()
+ break
if obj:
return obj
if create:
if obj:
return obj
if create: