initial commit: rocket.new export of broadcastbeat
This commit is contained in:
51
supabase/migrations/20260321220000_forum_moderation.sql
Normal file
51
supabase/migrations/20260321220000_forum_moderation.sql
Normal file
@@ -0,0 +1,51 @@
|
||||
-- Forum Moderation Migration for BroadcastBeat
|
||||
-- Adds moderation fields to forum_threads and forum_replies
|
||||
|
||||
-- ============================================================
|
||||
-- 1. ADD MODERATION COLUMNS TO forum_threads
|
||||
-- ============================================================
|
||||
ALTER TABLE public.forum_threads
|
||||
ADD COLUMN IF NOT EXISTS is_pinned BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS is_featured BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS is_locked BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS is_flagged BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS flag_reason TEXT,
|
||||
ADD COLUMN IF NOT EXISTS moderated_by UUID REFERENCES public.user_profiles(id) ON DELETE SET NULL,
|
||||
ADD COLUMN IF NOT EXISTS moderated_at TIMESTAMPTZ;
|
||||
|
||||
-- ============================================================
|
||||
-- 2. ADD MODERATION COLUMNS TO forum_replies
|
||||
-- ============================================================
|
||||
ALTER TABLE public.forum_replies
|
||||
ADD COLUMN IF NOT EXISTS is_hidden BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS is_flagged BOOLEAN DEFAULT false,
|
||||
ADD COLUMN IF NOT EXISTS flag_reason TEXT,
|
||||
ADD COLUMN IF NOT EXISTS moderated_by UUID REFERENCES public.user_profiles(id) ON DELETE SET NULL,
|
||||
ADD COLUMN IF NOT EXISTS moderated_at TIMESTAMPTZ;
|
||||
|
||||
-- ============================================================
|
||||
-- 3. INDEXES FOR MODERATION QUERIES
|
||||
-- ============================================================
|
||||
CREATE INDEX IF NOT EXISTS idx_forum_threads_is_pinned ON public.forum_threads(is_pinned) WHERE is_pinned = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_forum_threads_is_featured ON public.forum_threads(is_featured) WHERE is_featured = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_forum_threads_is_flagged ON public.forum_threads(is_flagged) WHERE is_flagged = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_forum_replies_is_flagged ON public.forum_replies(is_flagged) WHERE is_flagged = true;
|
||||
CREATE INDEX IF NOT EXISTS idx_forum_replies_is_hidden ON public.forum_replies(is_hidden) WHERE is_hidden = true;
|
||||
|
||||
-- ============================================================
|
||||
-- 4. RLS POLICIES FOR MODERATION (admin/service role)
|
||||
-- ============================================================
|
||||
|
||||
-- Allow authenticated users (admins) to update moderation fields on threads
|
||||
DROP POLICY IF EXISTS "admin_moderate_forum_threads" ON public.forum_threads;
|
||||
CREATE POLICY "admin_moderate_forum_threads"
|
||||
ON public.forum_threads FOR UPDATE TO authenticated
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
|
||||
-- Allow authenticated users (admins) to update moderation fields on replies
|
||||
DROP POLICY IF EXISTS "admin_moderate_forum_replies" ON public.forum_replies;
|
||||
CREATE POLICY "admin_moderate_forum_replies"
|
||||
ON public.forum_replies FOR UPDATE TO authenticated
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
Reference in New Issue
Block a user