home · contact · privacy
Enable deletion of Processes.
[plomtask] / plomtask / db.py
index ebd8c6c544fd9dd3aca7e040bccb3d354629806d..deeb748de0b427b1ff2f999e58713d3cee4e7807 100644 (file)
@@ -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_)