MIGRATION VERS GITEA
This commit is contained in:
commit
5f9d991c15
333 files changed
+108514
No files matched your search
@@ -0,0 +1,90 @@
|
||||
-- Tables de messagerie interne (V1)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.messagerie_threads (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.messagerie_participants (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
thread_id UUID NOT NULL REFERENCES public.messagerie_threads(id) ON DELETE CASCADE,
|
||||
user_id UUID NOT NULL REFERENCES public.utilisateurs(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
UNIQUE(thread_id, user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.messagerie_messages (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
thread_id UUID NOT NULL REFERENCES public.messagerie_threads(id) ON DELETE CASCADE,
|
||||
sender_id UUID NOT NULL REFERENCES public.utilisateurs(id) ON DELETE CASCADE,
|
||||
contenu TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_messagerie_participants_user_id ON public.messagerie_participants(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_messagerie_messages_thread_id ON public.messagerie_messages(thread_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_messagerie_messages_created_at ON public.messagerie_messages(created_at DESC);
|
||||
|
||||
-- RLS simple: participant du thread uniquement
|
||||
ALTER TABLE public.messagerie_threads ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.messagerie_participants ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.messagerie_messages ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_threads_select ON public.messagerie_threads;
|
||||
CREATE POLICY messagerie_threads_select ON public.messagerie_threads
|
||||
FOR SELECT TO anon
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.messagerie_participants p
|
||||
WHERE p.thread_id = messagerie_threads.id
|
||||
)
|
||||
);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_threads_insert ON public.messagerie_threads;
|
||||
CREATE POLICY messagerie_threads_insert ON public.messagerie_threads
|
||||
FOR INSERT TO anon
|
||||
WITH CHECK (true);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_threads_update ON public.messagerie_threads;
|
||||
CREATE POLICY messagerie_threads_update ON public.messagerie_threads
|
||||
FOR UPDATE TO anon
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.messagerie_participants p
|
||||
WHERE p.thread_id = messagerie_threads.id
|
||||
)
|
||||
)
|
||||
WITH CHECK (true);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_participants_select ON public.messagerie_participants;
|
||||
CREATE POLICY messagerie_participants_select ON public.messagerie_participants
|
||||
FOR SELECT TO anon
|
||||
USING (true);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_participants_insert ON public.messagerie_participants;
|
||||
CREATE POLICY messagerie_participants_insert ON public.messagerie_participants
|
||||
FOR INSERT TO anon
|
||||
WITH CHECK (true);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_messages_select ON public.messagerie_messages;
|
||||
CREATE POLICY messagerie_messages_select ON public.messagerie_messages
|
||||
FOR SELECT TO anon
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.messagerie_participants p
|
||||
WHERE p.thread_id = messagerie_messages.thread_id
|
||||
)
|
||||
);
|
||||
|
||||
DROP POLICY IF EXISTS messagerie_messages_insert ON public.messagerie_messages;
|
||||
CREATE POLICY messagerie_messages_insert ON public.messagerie_messages
|
||||
FOR INSERT TO anon
|
||||
WITH CHECK (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.messagerie_participants p
|
||||
WHERE p.thread_id = messagerie_messages.thread_id
|
||||
AND p.user_id = messagerie_messages.sender_id
|
||||
)
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user