bolt.diy/supabase/migrations/20240327000000_create_feedback_table.sql
2025-03-30 05:31:56 -07:00

49 lines
1.7 KiB
SQL

-- Create feedback table
CREATE TABLE IF NOT EXISTS public.feedback (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
user_id UUID REFERENCES auth.users(id),
description TEXT NOT NULL,
status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'reviewed', 'resolved')),
metadata JSONB DEFAULT '{}'
)
-- Create updated_at trigger for feedback table
CREATE TRIGGER update_feedback_updated_at
BEFORE UPDATE ON public.feedback
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column()
-- Enable Row Level Security
ALTER TABLE public.feedback ENABLE ROW LEVEL SECURITY
-- Create policies for feedback table
-- Allow public read access to feedback for admins
CREATE POLICY "Allow admin read access to all feedback"
ON public.feedback FOR SELECT
TO public
USING (
auth.uid() IN (SELECT id FROM public.profiles WHERE is_admin = true)
)
-- Allow users to read their own feedback
CREATE POLICY "Allow users to read their own feedback"
ON public.feedback FOR SELECT
TO public
USING (auth.uid() = user_id)
-- Allow anyone to create feedback (including anonymous users)
CREATE POLICY "Allow anyone to create feedback"
ON public.feedback FOR INSERT
TO public
WITH CHECK (true)
-- Allow admins to update any feedback
CREATE POLICY "Allow admins to update any feedback"
ON public.feedback FOR UPDATE
TO public
USING (
auth.uid() IN (SELECT id FROM public.profiles WHERE is_admin = true)
)
-- Allow users to update their own feedback
CREATE POLICY "Allow users to update their own feedback"
ON public.feedback FOR UPDATE
TO public
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id)