owpengram-server/deploy/migrations/0121_ephemeral_abuse_reports.up.sql
A f49c817def feat: sync ephemeral transient messages
Sync telesrv 570ccf8 (feat(ephemeral): implement Layer 228 transient messages).

Skipped telesrv docs changes per public sync rules; normalized the public appearance seed label.
2026-07-20 16:43:27 +08:00

23 lines
1.2 KiB
SQL

CREATE TABLE public.ephemeral_abuse_reports (
id bigserial PRIMARY KEY,
reporter_user_id bigint NOT NULL CHECK (reporter_user_id > 0),
channel_id bigint NOT NULL CHECK (channel_id > 0),
ephemeral_message_id integer NOT NULL CHECK (ephemeral_message_id > 0),
sender_user_id bigint NOT NULL CHECK (sender_user_id > 0),
receiver_user_id bigint NOT NULL CHECK (receiver_user_id = reporter_user_id),
report_option text NOT NULL CHECK (length(report_option) BETWEEN 1 AND 64),
report_comment text NOT NULL DEFAULT '' CHECK (length(report_comment) <= 4096),
comment_hash bytea NOT NULL CHECK (octet_length(comment_hash) = 32),
payload_hash bytea NOT NULL CHECK (octet_length(payload_hash) = 32),
evidence jsonb NOT NULL CHECK (jsonb_typeof(evidence) = 'object'),
created_at timestamptz NOT NULL,
CONSTRAINT ephemeral_abuse_reports_idempotency UNIQUE (
reporter_user_id, channel_id, ephemeral_message_id, report_option, comment_hash
)
);
CREATE INDEX ephemeral_abuse_reports_created_at_idx
ON public.ephemeral_abuse_reports (created_at DESC, id DESC);
CREATE INDEX ephemeral_abuse_reports_sender_created_idx
ON public.ephemeral_abuse_reports (sender_user_id, created_at DESC, id DESC);