From 466e7abf03d189b6313367d3f345eea5977edf5f Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Sivakumar Date: Sun, 19 Jul 2026 03:01:25 +0530 Subject: [PATCH] fix(db): point verification_logs FK at verifications, not legacy verification_requests scripts/init-db.sql created verification_logs.verification_request_id with a foreign key against verification_requests(id) - an unrelated legacy table. VerificationRepository::update_status inserts the verifications.id (the row actually being approved/rejected) into that column on every status change, which has been violating the FK on every single call: "insert or update on table verification_logs violates foreign key constraint verification_logs_verification_request_id_fkey" This made every Approve/Reject click in Verification Management 500, confirmed via the browser's actual response body. Drop and recreate the constraint to point at verifications(id), which is what the code has always actually been logging against. Co-Authored-By: Claude Sonnet 5 --- ...60718210823_fix_verification_logs_fk.down.sql | 8 ++++++++ ...0260718210823_fix_verification_logs_fk.up.sql | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 crates/db/migrations/20260718210823_fix_verification_logs_fk.down.sql create mode 100644 crates/db/migrations/20260718210823_fix_verification_logs_fk.up.sql diff --git a/crates/db/migrations/20260718210823_fix_verification_logs_fk.down.sql b/crates/db/migrations/20260718210823_fix_verification_logs_fk.down.sql new file mode 100644 index 0000000..dc12d08 --- /dev/null +++ b/crates/db/migrations/20260718210823_fix_verification_logs_fk.down.sql @@ -0,0 +1,8 @@ +BEGIN; + +ALTER TABLE verification_logs DROP CONSTRAINT IF EXISTS verification_logs_verification_request_id_fkey; +ALTER TABLE verification_logs + ADD CONSTRAINT verification_logs_verification_request_id_fkey + FOREIGN KEY (verification_request_id) REFERENCES verification_requests(id) ON DELETE CASCADE; + +COMMIT; diff --git a/crates/db/migrations/20260718210823_fix_verification_logs_fk.up.sql b/crates/db/migrations/20260718210823_fix_verification_logs_fk.up.sql new file mode 100644 index 0000000..5baf658 --- /dev/null +++ b/crates/db/migrations/20260718210823_fix_verification_logs_fk.up.sql @@ -0,0 +1,16 @@ +-- verification_logs.verification_request_id was mistakenly created (init-db.sql) +-- referencing the legacy, unrelated verification_requests table instead of the +-- verifications table it actually logs against. VerificationRepository::update_status +-- inserts the verifications.id into this column on every approve/reject/status-change +-- call, which has been violating the foreign key constraint on every single call +-- ("insert or update on table verification_logs violates foreign key constraint +-- verification_logs_verification_request_id_fkey"), making Approve/Reject 500 every time. + +BEGIN; + +ALTER TABLE verification_logs DROP CONSTRAINT IF EXISTS verification_logs_verification_request_id_fkey; +ALTER TABLE verification_logs + ADD CONSTRAINT verification_logs_verification_request_id_fkey + FOREIGN KEY (verification_request_id) REFERENCES verifications(id) ON DELETE CASCADE; + +COMMIT;