pidrio / migrations /20250523121149_rough_jungle.sql
Raiff1982's picture
Upload 20 files
03bff6f verified
/*
# Create storage bucket and policies
1. Changes
- Create codette-files storage bucket if it doesn't exist
- Add RLS policies for authenticated users to:
- Read files
- Upload files
- Update files
- Delete files
- Add safety checks to prevent policy conflicts
*/
-- Create the storage bucket
INSERT INTO storage.buckets (id, name)
VALUES ('codette-files', 'codette-files')
ON CONFLICT (id) DO NOTHING;
-- Set up RLS policies for the bucket with existence checks
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'objects'
AND policyname = 'Allow authenticated users to read files'
) THEN
CREATE POLICY "Allow authenticated users to read files"
ON storage.objects FOR SELECT
TO authenticated
USING (bucket_id = 'codette-files');
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'objects'
AND policyname = 'Allow authenticated users to upload files'
) THEN
CREATE POLICY "Allow authenticated users to upload files"
ON storage.objects FOR INSERT
TO authenticated
WITH CHECK (bucket_id = 'codette-files');
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'objects'
AND policyname = 'Allow authenticated users to update files'
) THEN
CREATE POLICY "Allow authenticated users to update files"
ON storage.objects FOR UPDATE
TO authenticated
USING (bucket_id = 'codette-files')
WITH CHECK (bucket_id = 'codette-files');
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_policies
WHERE tablename = 'objects'
AND policyname = 'Allow authenticated users to delete files'
) THEN
CREATE POLICY "Allow authenticated users to delete files"
ON storage.objects FOR DELETE
TO authenticated
USING (bucket_id = 'codette-files');
END IF;
END $$;