X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=plomtask%2Fdb.py;fp=plomtask%2Fdb.py;h=982ddfe3b96915d4ffc8bd8d4bce264671c09069;hb=10af8a54a17047a4554d4b8d051a238271c74906;hp=0509492473c44730ea70fa3e793775cd892e2866;hpb=a1d3ef4b42bdac28f20d7f104ff93bf7efa37a30;p=plomtask diff --git a/plomtask/db.py b/plomtask/db.py index 0509492..982ddfe 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -130,6 +130,23 @@ class BaseModel(Generic[BaseModelId]): raise HandledException(msg) self.id_ = id_ + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return False + to_hash_me = tuple([self.id_] + + [getattr(self, name) for name in self.to_save]) + to_hash_other = tuple([other.id_] + + [getattr(other, name) for name in other.to_save]) + return hash(to_hash_me) == hash(to_hash_other) + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, self.__class__): + msg = 'cannot compare to object of different class' + raise HandledException(msg) + assert isinstance(self.id_, int) + assert isinstance(other.id_, int) + return self.id_ < other.id_ + @classmethod def get_cached(cls: type[BaseModelInstance], id_: BaseModelId) -> BaseModelInstance | None: @@ -228,16 +245,6 @@ class BaseModel(Generic[BaseModelId]): items[item.id_] = item return list(items.values()) - def __eq__(self, other: object) -> bool: - if not isinstance(other, self.__class__): - msg = 'cannot compare to object of different class' - raise HandledException(msg) - to_hash_me = tuple([self.id_] + - [getattr(self, name) for name in self.to_save]) - to_hash_other = tuple([other.id_] + - [getattr(other, name) for name in other.to_save]) - return hash(to_hash_me) == hash(to_hash_other) - def save_core(self, db_conn: DatabaseConnection) -> None: """Write bare-bones self (sans connected items), ensuring self.id_.