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>
42 lines
1.7 KiB
SQL
42 lines
1.7 KiB
SQL
|
|
CREATE TABLE public.support_chats (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id uuid NOT NULL,
|
|
association_id uuid REFERENCES public.associations(id) ON DELETE CASCADE,
|
|
status text NOT NULL DEFAULT 'open',
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE public.support_chat_messages (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
chat_id uuid NOT NULL REFERENCES public.support_chats(id) ON DELETE CASCADE,
|
|
role text NOT NULL DEFAULT 'user',
|
|
content text NOT NULL,
|
|
escalated boolean NOT NULL DEFAULT false,
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
ALTER TABLE public.support_chats ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.support_chat_messages ENABLE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY "Users can manage own support chats" ON public.support_chats
|
|
FOR ALL TO authenticated USING (user_id = auth.uid()) WITH CHECK (user_id = auth.uid());
|
|
|
|
CREATE POLICY "Users can read own chat messages" ON public.support_chat_messages
|
|
FOR SELECT TO authenticated
|
|
USING (chat_id IN (SELECT id FROM public.support_chats WHERE user_id = auth.uid()));
|
|
|
|
CREATE POLICY "Users can insert own chat messages" ON public.support_chat_messages
|
|
FOR INSERT TO authenticated
|
|
WITH CHECK (chat_id IN (SELECT id FROM public.support_chats WHERE user_id = auth.uid()));
|
|
|
|
CREATE POLICY "Admins can read all support chats" ON public.support_chats
|
|
FOR SELECT TO authenticated USING (public.has_role(auth.uid(), 'admin'));
|
|
|
|
CREATE POLICY "Admins can read all chat messages" ON public.support_chat_messages
|
|
FOR SELECT TO authenticated USING (
|
|
chat_id IN (SELECT id FROM public.support_chats)
|
|
AND public.has_role(auth.uid(), 'admin')
|
|
);
|