mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-23 16:51:14 -05:00
Implement planned features
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
-- Phase 1: Add conflict resolution tracking
|
||||
CREATE TABLE IF NOT EXISTS public.conflict_resolutions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
submission_id UUID NOT NULL REFERENCES public.content_submissions(id) ON DELETE CASCADE,
|
||||
detected_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
resolved_by UUID REFERENCES auth.users(id) ON DELETE SET NULL,
|
||||
resolution_strategy TEXT NOT NULL CHECK (resolution_strategy IN ('keep-mine', 'keep-theirs', 'reload', 'merge')),
|
||||
conflict_details JSONB,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Add index for performance
|
||||
CREATE INDEX IF NOT EXISTS idx_conflict_resolutions_submission
|
||||
ON public.conflict_resolutions(submission_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_conflict_resolutions_detected_at
|
||||
ON public.conflict_resolutions(detected_at DESC);
|
||||
|
||||
-- Enable RLS
|
||||
ALTER TABLE public.conflict_resolutions ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Policy: Moderators can view all conflict resolutions
|
||||
CREATE POLICY "Moderators can view conflict resolutions"
|
||||
ON public.conflict_resolutions
|
||||
FOR SELECT
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.user_roles
|
||||
WHERE user_id = auth.uid()
|
||||
AND role IN ('moderator', 'admin', 'superuser')
|
||||
)
|
||||
);
|
||||
|
||||
-- Policy: Moderators can insert conflict resolutions
|
||||
CREATE POLICY "Moderators can insert conflict resolutions"
|
||||
ON public.conflict_resolutions
|
||||
FOR INSERT
|
||||
WITH CHECK (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.user_roles
|
||||
WHERE user_id = auth.uid()
|
||||
AND role IN ('moderator', 'admin', 'superuser')
|
||||
)
|
||||
AND resolved_by = auth.uid()
|
||||
);
|
||||
|
||||
-- Add index for notification deduplication performance (Phase 3)
|
||||
CREATE INDEX IF NOT EXISTS idx_notification_logs_dedup
|
||||
ON public.notification_logs(user_id, idempotency_key, created_at);
|
||||
|
||||
-- Add comment
|
||||
COMMENT ON TABLE public.conflict_resolutions IS 'Tracks resolution of concurrent edit conflicts in moderation system';
|
||||
Reference in New Issue
Block a user