X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fdb.py;fp=plomtask%2Fdb.py;h=797b08e8412809e3ac23bb7f04fc24fef955be03;hb=8f28c8c685fa91b9cbabb4b424da4091e52058cf;hp=f6ef1cb6724a4a8cb13cc3d74d8c745338294463;hpb=25b71c6f0b10db05907128daf50c6e543e514c35;p=plomtask diff --git a/plomtask/db.py b/plomtask/db.py index f6ef1cb..797b08e 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -388,9 +388,7 @@ class BaseModel(Generic[BaseModelId]): return obj @classmethod - def by_id(cls, db_conn: DatabaseConnection, - id_: BaseModelId | None - ) -> Self: + def by_id(cls, db_conn: DatabaseConnection, id_: BaseModelId) -> Self: """Retrieve by id_, on failure throw NotFoundException. First try to get from cls.cache_, only then check DB; if found, @@ -414,11 +412,12 @@ class BaseModel(Generic[BaseModelId]): """Wrapper around .by_id, creating (not caching/saving) if not find.""" if not cls.can_create_by_id: raise HandledException('Class cannot .by_id_or_create.') + if id_ is None: + return cls(None) try: return cls.by_id(db_conn, id_) except NotFoundException: - obj = cls(id_) - return obj + return cls(id_) @classmethod def all(cls: type[BaseModelInstance],