mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 01:40:01 +00:00
183fe0a93c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
1.4 KiB
SQL
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;
|