X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=plomtask%2Fdb.py;h=deeb748de0b427b1ff2f999e58713d3cee4e7807;hb=ee18435127ad396c24dbee2c7efcdbe6810d5a91;hp=ebd8c6c544fd9dd3aca7e040bccb3d354629806d;hpb=8570f4ce4d44b813a1f02b72c5c45a57d2003bae;p=plomtask diff --git a/plomtask/db.py b/plomtask/db.py index ebd8c6c..deeb748 100644 --- a/plomtask/db.py +++ b/plomtask/db.py @@ -102,7 +102,8 @@ class DatabaseConnection: return [row[0] for row in self.exec(f'SELECT {column} FROM {table_name}')] - def delete_where(self, table_name: str, key: str, target: int) -> None: + def delete_where(self, table_name: str, key: str, + target: int | str) -> None: """Delete from table where key == target.""" self.exec(f'DELETE FROM {table_name} WHERE {key} = ?', (target,)) @@ -234,3 +235,9 @@ class BaseModel(Generic[BaseModelId]): if update_with_lastrowid: self.id_ = cursor.lastrowid # type: ignore[assignment] self.cache() + + def remove(self, db_conn: DatabaseConnection) -> None: + """Remove from DB.""" + assert isinstance(self.id_, int | str) + self.uncache() + db_conn.delete_where(self.table_name, 'id', self.id_)