-- Migration to cleanup refresh_tokens table -- Remove legacy column 'token' which caused NULL constraint violations -- Ensure correct constraints on token_hash -- This migration runs AFTER 010_auth_and_users.sql which creates the refresh_tokens table -- Check if the table exists before attempting to alter it DO $$ BEGIN -- Only proceed if the refresh_tokens table exists IF EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'refresh_tokens' ) THEN -- 1. Remove the legacy 'token' column which is no longer used by the application -- The application now uses 'token_hash' for secure storage ALTER TABLE refresh_tokens DROP COLUMN IF EXISTS token; -- 2. Ensure token_hash has the correct constraints -- It should be NOT NULL and UNIQUE to prevent duplicates and ensure integrity -- Only set NOT NULL if the column exists and doesn't already have the constraint IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'refresh_tokens' AND column_name = 'token_hash' ) THEN -- Check if column is already NOT NULL IF EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'refresh_tokens' AND column_name = 'token_hash' AND is_nullable = 'YES' ) THEN ALTER TABLE refresh_tokens ALTER COLUMN token_hash SET NOT NULL; END IF; END IF; -- 3. Add comment to clarify the column usage COMMENT ON COLUMN refresh_tokens.token_hash IS 'SHA-256 hash of the refresh token. The raw token is never stored.'; ELSE RAISE NOTICE 'Table refresh_tokens does not exist yet. Skipping cleanup migration.'; END IF; END $$;