162 lines
5.4 KiB
SQL
162 lines
5.4 KiB
SQL
-- Complete Fix for Sprint 1-3 Migration
|
|
-- Safe to run multiple times
|
|
|
|
-- ==============================================
|
|
-- Step 1: Add columns to users table
|
|
-- ==============================================
|
|
|
|
DO $$
|
|
BEGIN
|
|
-- Add profile_photo_url
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'profile_photo_url'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN profile_photo_url VARCHAR;
|
|
RAISE NOTICE 'Added profile_photo_url to users table';
|
|
ELSE
|
|
RAISE NOTICE 'profile_photo_url already exists in users table';
|
|
END IF;
|
|
|
|
-- Add social_media_facebook
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'social_media_facebook'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN social_media_facebook VARCHAR;
|
|
RAISE NOTICE 'Added social_media_facebook to users table';
|
|
ELSE
|
|
RAISE NOTICE 'social_media_facebook already exists in users table';
|
|
END IF;
|
|
|
|
-- Add social_media_instagram
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'social_media_instagram'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN social_media_instagram VARCHAR;
|
|
RAISE NOTICE 'Added social_media_instagram to users table';
|
|
ELSE
|
|
RAISE NOTICE 'social_media_instagram already exists in users table';
|
|
END IF;
|
|
|
|
-- Add social_media_twitter
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'social_media_twitter'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN social_media_twitter VARCHAR;
|
|
RAISE NOTICE 'Added social_media_twitter to users table';
|
|
ELSE
|
|
RAISE NOTICE 'social_media_twitter already exists in users table';
|
|
END IF;
|
|
|
|
-- Add social_media_linkedin
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'social_media_linkedin'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN social_media_linkedin VARCHAR;
|
|
RAISE NOTICE 'Added social_media_linkedin to users table';
|
|
ELSE
|
|
RAISE NOTICE 'social_media_linkedin already exists in users table';
|
|
END IF;
|
|
END $$;
|
|
|
|
-- ==============================================
|
|
-- Step 2: Add columns to events table
|
|
-- ==============================================
|
|
|
|
DO $$
|
|
BEGIN
|
|
-- Add microsoft_calendar_id
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'events' AND column_name = 'microsoft_calendar_id'
|
|
) THEN
|
|
ALTER TABLE events ADD COLUMN microsoft_calendar_id VARCHAR;
|
|
RAISE NOTICE 'Added microsoft_calendar_id to events table';
|
|
ELSE
|
|
RAISE NOTICE 'microsoft_calendar_id already exists in events table';
|
|
END IF;
|
|
|
|
-- Add microsoft_calendar_sync_enabled
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'events' AND column_name = 'microsoft_calendar_sync_enabled'
|
|
) THEN
|
|
ALTER TABLE events ADD COLUMN microsoft_calendar_sync_enabled BOOLEAN DEFAULT FALSE;
|
|
RAISE NOTICE 'Added microsoft_calendar_sync_enabled to events table';
|
|
ELSE
|
|
RAISE NOTICE 'microsoft_calendar_sync_enabled already exists in events table';
|
|
END IF;
|
|
END $$;
|
|
|
|
-- ==============================================
|
|
-- Step 3: Fix storage_usage initialization
|
|
-- ==============================================
|
|
|
|
-- Delete any incomplete records
|
|
DELETE FROM storage_usage WHERE id IS NULL;
|
|
|
|
-- Insert initial record if table is empty
|
|
INSERT INTO storage_usage (id, total_bytes_used, max_bytes_allowed, last_updated)
|
|
SELECT
|
|
gen_random_uuid(),
|
|
0,
|
|
10737418240, -- 10GB default
|
|
CURRENT_TIMESTAMP
|
|
WHERE NOT EXISTS (SELECT 1 FROM storage_usage);
|
|
|
|
-- ==============================================
|
|
-- Step 4: Verify everything
|
|
-- ==============================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
user_col_count INT;
|
|
event_col_count INT;
|
|
storage_count INT;
|
|
BEGIN
|
|
-- Count users columns
|
|
SELECT COUNT(*) INTO user_col_count
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'users'
|
|
AND column_name IN (
|
|
'profile_photo_url',
|
|
'social_media_facebook',
|
|
'social_media_instagram',
|
|
'social_media_twitter',
|
|
'social_media_linkedin'
|
|
);
|
|
|
|
-- Count events columns
|
|
SELECT COUNT(*) INTO event_col_count
|
|
FROM information_schema.columns
|
|
WHERE table_name = 'events'
|
|
AND column_name IN (
|
|
'microsoft_calendar_id',
|
|
'microsoft_calendar_sync_enabled'
|
|
);
|
|
|
|
-- Count storage_usage records
|
|
SELECT COUNT(*) INTO storage_count FROM storage_usage;
|
|
|
|
-- Report results
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'Migration Verification Results:';
|
|
RAISE NOTICE '========================================';
|
|
RAISE NOTICE 'Users table: %/5 columns added', user_col_count;
|
|
RAISE NOTICE 'Events table: %/2 columns added', event_col_count;
|
|
RAISE NOTICE 'Storage usage: % record(s)', storage_count;
|
|
RAISE NOTICE '';
|
|
|
|
IF user_col_count = 5 AND event_col_count = 2 AND storage_count > 0 THEN
|
|
RAISE NOTICE '✅ Migration completed successfully!';
|
|
ELSE
|
|
RAISE NOTICE '⚠️ Migration incomplete. Please check the logs above.';
|
|
END IF;
|
|
RAISE NOTICE '========================================';
|
|
END $$;
|