Files
acmcc/supabase/migrations/20260320204955_0cd5ae93-3661-43a6-9cbc-98a989728794.sql
T
2026-06-01 20:19:26 -04:00

45 lines
1.4 KiB
SQL

-- Direct messages table
CREATE TABLE public.direct_messages (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
sender_id UUID NOT NULL,
recipient_id UUID NOT NULL,
message TEXT NOT NULL,
read_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- Index for conversation lookups
CREATE INDEX idx_dm_sender ON public.direct_messages(sender_id, created_at DESC);
CREATE INDEX idx_dm_recipient ON public.direct_messages(recipient_id, created_at DESC);
CREATE INDEX idx_dm_conversation ON public.direct_messages(
LEAST(sender_id, recipient_id),
GREATEST(sender_id, recipient_id),
created_at DESC
);
-- Enable RLS
ALTER TABLE public.direct_messages ENABLE ROW LEVEL SECURITY;
-- Users can read messages they sent or received
CREATE POLICY "Users can read own messages"
ON public.direct_messages FOR SELECT
TO authenticated
USING (auth.uid() = sender_id OR auth.uid() = recipient_id);
-- Users can insert messages where they are the sender
CREATE POLICY "Users can send messages"
ON public.direct_messages FOR INSERT
TO authenticated
WITH CHECK (auth.uid() = sender_id);
-- Users can update messages they received (for marking read)
CREATE POLICY "Recipients can mark messages read"
ON public.direct_messages FOR UPDATE
TO authenticated
USING (auth.uid() = recipient_id)
WITH CHECK (auth.uid() = recipient_id);
-- Enable realtime
ALTER PUBLICATION supabase_realtime ADD TABLE public.direct_messages;