diff --git a/deploy/db/supplements.py b/deploy/db/supplements.py index 5eb0896..33652b1 100644 --- a/deploy/db/supplements.py +++ b/deploy/db/supplements.py @@ -28,7 +28,7 @@ def get(supp_id): def delete_by_document(contract_id, filename): - """Delete supplement+document by contract+filename.""" + """Delete supplement+document by contract+filename (cascade: spec_events first).""" row = query( """SELECT s.id as sid, s.document_id FROM supplements s JOIN documents d ON d.id = s.document_id @@ -37,7 +37,13 @@ def delete_by_document(contract_id, filename): ) if row: r = row[0] + # 1. Delete spec_current for this contract (FK to spec_events) + execute("DELETE FROM spec_current WHERE contract_id = %s", (contract_id,)) + # 2. Delete spec_events referencing this supplement + execute("DELETE FROM spec_events WHERE supplement_id = %s", (r["sid"],)) + # 3. Delete supplement execute("DELETE FROM supplements WHERE id = %s", (r["sid"],)) + # 4. Delete document execute("DELETE FROM documents WHERE id = %s", (r["document_id"],)) return True return False