Spaces:
Runtime error
Runtime error
-- Create combined_datasets table | |
CREATE TABLE IF NOT EXISTS public.combined_datasets ( | |
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), | |
name TEXT NOT NULL, | |
description TEXT, | |
source_datasets TEXT[] NOT NULL, | |
created_at TIMESTAMPTZ NOT NULL DEFAULT now(), | |
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), | |
created_by UUID REFERENCES auth.users(id), | |
impact_level TEXT CHECK (impact_level = ANY (ARRAY['low', 'medium', 'high']::text[])), | |
status TEXT NOT NULL DEFAULT 'processing', | |
combination_strategy TEXT NOT NULL DEFAULT 'merge', | |
size_bytes BIGINT, | |
file_count INTEGER, | |
downloads INTEGER, | |
likes INTEGER | |
); | |
-- Add indexes for faster querying | |
CREATE INDEX IF NOT EXISTS idx_combined_datasets_created_by ON public.combined_datasets(created_by); | |
CREATE INDEX IF NOT EXISTS idx_combined_datasets_impact_level ON public.combined_datasets(impact_level); | |
CREATE INDEX IF NOT EXISTS idx_combined_datasets_status ON public.combined_datasets(status); | |
-- Add Row Level Security (RLS) policies | |
ALTER TABLE public.combined_datasets ENABLE ROW LEVEL SECURITY; | |
-- Policy to allow users to see all combined datasets | |
CREATE POLICY "Anyone can view combined datasets" | |
ON public.combined_datasets | |
FOR SELECT USING (true); | |
-- Policy to allow users to create their own combined datasets | |
CREATE POLICY "Users can create their own combined datasets" | |
ON public.combined_datasets | |
FOR INSERT | |
WITH CHECK (auth.uid() = created_by); | |
-- Policy to allow users to update only their own combined datasets | |
CREATE POLICY "Users can update their own combined datasets" | |
ON public.combined_datasets | |
FOR UPDATE | |
USING (auth.uid() = created_by); | |
-- Function to automatically update updated_at timestamp | |
CREATE OR REPLACE FUNCTION update_combined_datasets_updated_at() | |
RETURNS TRIGGER AS $$ | |
BEGIN | |
NEW.updated_at = now(); | |
RETURN NEW; | |
END; | |
$$ LANGUAGE plpgsql; | |
-- Trigger to automatically update updated_at timestamp | |
CREATE TRIGGER update_combined_datasets_updated_at_trigger | |
BEFORE UPDATE ON public.combined_datasets | |
FOR EACH ROW | |
EXECUTE FUNCTION update_combined_datasets_updated_at(); |