diff --git a/supabase/migrations/002_add_profile_columns.sql b/supabase/migrations/002_add_profile_columns.sql new file mode 100644 index 00000000..35061df8 --- /dev/null +++ b/supabase/migrations/002_add_profile_columns.sql @@ -0,0 +1,79 @@ +-- ======================================== +-- Add Missing Columns to Profiles Table +-- ======================================== +-- Run this in Supabase SQL Editor +-- Dashboard → SQL Editor → New Query → Paste & Run + +-- Add bio column +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS bio TEXT; + +-- Add phone column +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS phone TEXT; + +-- Add language column (default: 'en') +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS language TEXT DEFAULT 'en'; + +-- Add theme column (default: 'dark') +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS theme TEXT DEFAULT 'dark'; + +-- Add notification preferences +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS notifications_email BOOLEAN DEFAULT true; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS notifications_push BOOLEAN DEFAULT false; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS notifications_sms BOOLEAN DEFAULT false; + +-- Add 2FA column +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS two_factor_enabled BOOLEAN DEFAULT false; + +-- Add location and website columns (for completeness) +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS location TEXT; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS website TEXT; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS phone_number TEXT; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS recovery_email TEXT; + +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS recovery_email_verified BOOLEAN DEFAULT false; + +-- Add email_verified (for compatibility, though we prefer user.email_confirmed_at) +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS email_verified BOOLEAN DEFAULT false; + +-- Add joined_at column +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS joined_at TIMESTAMP WITH TIME ZONE DEFAULT TIMEZONE('utc'::text, NOW()); + +-- Add role column +ALTER TABLE public.profiles +ADD COLUMN IF NOT EXISTS role TEXT DEFAULT 'Member'; + +-- Create indexes for frequently queried columns +CREATE INDEX IF NOT EXISTS idx_profiles_phone ON public.profiles(phone); +CREATE INDEX IF NOT EXISTS idx_profiles_language ON public.profiles(language); +CREATE INDEX IF NOT EXISTS idx_profiles_location ON public.profiles(location); + +-- Update existing users' joined_at to their created_at if null +UPDATE public.profiles +SET joined_at = created_at +WHERE joined_at IS NULL; + +-- Success message +DO $$ +BEGIN + RAISE NOTICE 'Profile columns added successfully!'; +END $$;