-- Enable the pgcrypto extension for UUID generation CREATE EXTENSION IF NOT EXISTS pgcrypto; -- Create profiles table CREATE TABLE IF NOT EXISTS profiles ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE, first_name TEXT, last_name TEXT, email TEXT UNIQUE, skills TEXT[], experience_level TEXT, job_type TEXT[], location TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()) NOT NULL, updated_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()) NOT NULL ); -- Create RLS policies ALTER TABLE profiles ENABLE ROW LEVEL SECURITY; CREATE POLICY "Users can view their own profile" ON profiles FOR SELECT USING (auth.uid() = user_id); CREATE POLICY "Users can update their own profile" ON profiles FOR UPDATE USING (auth.uid() = user_id); CREATE POLICY "Users can insert their own profile" ON profiles FOR INSERT WITH CHECK (auth.uid() = user_id); -- Create function to handle new user signup CREATE OR REPLACE FUNCTION public.handle_new_user() RETURNS TRIGGER AS $$ BEGIN INSERT INTO public.profiles (user_id, email) VALUES (new.id, new.email); RETURN new; END; $$ LANGUAGE plpgsql SECURITY DEFINER; -- Create trigger for new user signup CREATE OR REPLACE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();