feat: Implement contact submission archiving and deletion

This commit is contained in:
gpt-engineer-app[bot]
2025-10-28 19:36:11 +00:00
parent 2ebb2eafec
commit ed55905295
3 changed files with 237 additions and 14 deletions

View File

@@ -0,0 +1,31 @@
-- Add archive support columns to contact_submissions
ALTER TABLE contact_submissions
ADD COLUMN archived_at timestamp with time zone,
ADD COLUMN archived_by uuid REFERENCES auth.users(id);
-- Add comments for clarity
COMMENT ON COLUMN contact_submissions.archived_at IS 'Timestamp when submission was archived (soft deleted)';
COMMENT ON COLUMN contact_submissions.archived_by IS 'User who archived this submission';
-- Index for performance on archived queries
CREATE INDEX idx_contact_submissions_archived ON contact_submissions(archived_at)
WHERE archived_at IS NOT NULL;
-- Add FK constraint to ensure email threads are deleted with submission (cascade)
ALTER TABLE contact_email_threads
ADD CONSTRAINT fk_submission_cascade
FOREIGN KEY (submission_id)
REFERENCES contact_submissions(id)
ON DELETE CASCADE;
-- Add comment on constraint
COMMENT ON CONSTRAINT fk_submission_cascade ON contact_email_threads IS
'Cascade delete email threads when parent submission is deleted';
-- Allow moderators to DELETE contact submissions (hard delete with MFA)
CREATE POLICY "Moderators can delete contact submissions" ON contact_submissions
FOR DELETE
TO authenticated
USING (
is_moderator(auth.uid()) AND has_aal2()
);