for step in self.explicit_steps:
step.save(db_conn)
+ def remove(self, db_conn: DatabaseConnection) -> None:
+ """Remove from DB, with dependencies."""
+ assert isinstance(self.id_, int)
+ db_conn.delete_where('process_conditions', 'process', self.id_)
+ db_conn.delete_where('process_enables', 'process', self.id_)
+ db_conn.delete_where('process_disables', 'process', self.id_)
+ for step in self.explicit_steps:
+ step.remove(db_conn)
+ db_conn.delete_where('process_titles', 'parent', self.id_)
+ db_conn.delete_where('process_descriptions', 'parent', self.id_)
+ db_conn.delete_where('process_efforts', 'parent', self.id_)
+ super().remove(db_conn)
+
class ProcessStep(BaseModel[int]):
"""Sub-unit of Processes."""
def save(self, db_conn: DatabaseConnection) -> None:
"""Default to simply calling self.save_core for simple cases."""
self.save_core(db_conn)
+
+ def remove(self, db_conn: DatabaseConnection) -> None:
+ """Remove from DB, and owner's .explicit_steps."""
+ owner = Process.by_id(db_conn, self.owner_id)
+ owner.explicit_steps.remove(self)
+ super().remove(db_conn)