From 7538c0a5c98941ae85ffaa71f1d101b3328cd4da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 24 Jun 2026 14:50:31 +0400 Subject: [PATCH] =?UTF-8?q?v1.0.174:=20fix=20FK=20cascade=20in=20delete=5F?= =?UTF-8?q?by=5Fdocument=20=E2=80=94=20spec=5Fcurrent=20=E2=86=92=20spec?= =?UTF-8?q?=5Fevents=20=E2=86=92=20supplement=20=E2=86=92=20document?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/db/supplements.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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