quivr/scripts/20230606131110_add_uuid_user_id.sql
2023-07-03 14:41:33 +02:00

41 lines
1.4 KiB
PL/PgSQL

BEGIN;
-- Function to check if column exists in a table
DO $$
BEGIN
-- Check if email column doesn't exist, then add it
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'email') THEN
ALTER TABLE users ADD COLUMN email TEXT;
END IF;
-- Copy user_id to email column only if user_id column exists
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'user_id') THEN
UPDATE users SET email = user_id;
END IF;
-- Check if user_id column exists, then drop it
IF EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'user_id') THEN
ALTER TABLE users DROP COLUMN user_id;
END IF;
-- Check if new user_id column doesn't exist, then add it
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'user_id') THEN
ALTER TABLE users ADD COLUMN user_id UUID DEFAULT gen_random_uuid();
ALTER TABLE users ADD PRIMARY KEY (user_id);
END IF;
EXCEPTION WHEN others THEN
-- Exception block to catch errors
RAISE NOTICE 'An error occurred during migration.';
END;
$$ LANGUAGE plpgsql;
INSERT INTO migrations (name)
SELECT '20230606131110_add_uuid_user_id'
WHERE NOT EXISTS (
SELECT 1 FROM migrations WHERE name = '20230606131110_add_uuid_user_id'
);
COMMIT;