sojorn/go-backend/migrations/20260218120000_add_capsule_reports.sql
Patrick Britton 7937e1c71a feat: Add capsule_reports migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 09:04:19 -06:00

23 lines
1.3 KiB
SQL

-- Capsule report system: members voluntarily submit decrypted evidence when reporting
-- encrypted entries. The server stores the plaintext sample provided by the reporter.
CREATE TABLE IF NOT EXISTS capsule_reports (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
reporter_id UUID NOT NULL REFERENCES profiles(id) ON DELETE CASCADE,
capsule_id UUID NOT NULL REFERENCES groups(id) ON DELETE CASCADE,
entry_id UUID NOT NULL REFERENCES capsule_entries(id) ON DELETE CASCADE,
decrypted_sample TEXT, -- plaintext voluntarily provided by the reporter as evidence
reason TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending'
CHECK (status IN ('pending', 'reviewed', 'actioned', 'dismissed')),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Prevent duplicate reports from the same user for the same entry
CREATE UNIQUE INDEX IF NOT EXISTS uq_capsule_reports_reporter_entry
ON capsule_reports (reporter_id, entry_id);
CREATE INDEX IF NOT EXISTS idx_capsule_reports_status ON capsule_reports (status);
CREATE INDEX IF NOT EXISTS idx_capsule_reports_capsule ON capsule_reports (capsule_id);