mirror of
https://github.com/9technologygroup/patchmon.net.git
synced 2025-10-23 07:42:05 +00:00
- Modified 20251005000000_add_user_sessions to check if table exists first - Added existence checks for all indexes and foreign keys - Migration now works for both fresh installs and 1.2.7 upgrades - Prevents P3018 error by gracefully handling existing table - Added comprehensive logging for debugging
65 lines
2.3 KiB
SQL
65 lines
2.3 KiB
SQL
-- Reconcile user_sessions migration from 1.2.7 to 1.2.8+
|
|
-- This migration handles the case where 1.2.7 had 'add_user_sessions' without timestamp
|
|
-- and 1.2.8+ renamed it to '20251005000000_add_user_sessions' with timestamp
|
|
|
|
DO $$
|
|
DECLARE
|
|
table_exists boolean := false;
|
|
migration_exists boolean := false;
|
|
BEGIN
|
|
-- Check if user_sessions table exists
|
|
SELECT EXISTS (
|
|
SELECT 1 FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name = 'user_sessions'
|
|
) INTO table_exists;
|
|
|
|
-- Check if the migration record already exists
|
|
SELECT EXISTS (
|
|
SELECT 1 FROM _prisma_migrations
|
|
WHERE migration_name = '20251005000000_add_user_sessions'
|
|
) INTO migration_exists;
|
|
|
|
-- If table exists but no migration record, create one
|
|
IF table_exists AND NOT migration_exists THEN
|
|
RAISE NOTICE 'Table exists but no migration record found - creating migration record for 1.2.7 upgrade';
|
|
|
|
-- Insert a successful migration record for the existing table
|
|
INSERT INTO _prisma_migrations (
|
|
id,
|
|
checksum,
|
|
finished_at,
|
|
migration_name,
|
|
logs,
|
|
rolled_back_at,
|
|
started_at,
|
|
applied_steps_count
|
|
) VALUES (
|
|
gen_random_uuid()::text,
|
|
'', -- Empty checksum since we're reconciling
|
|
NOW(),
|
|
'20251005000000_add_user_sessions',
|
|
'Reconciled from 1.2.7 - table already exists',
|
|
NULL,
|
|
NOW(),
|
|
1
|
|
);
|
|
|
|
RAISE NOTICE 'Migration record created for existing table';
|
|
ELSIF table_exists AND migration_exists THEN
|
|
RAISE NOTICE 'Table exists and migration record exists - no action needed';
|
|
ELSE
|
|
RAISE NOTICE 'Table does not exist - migration will proceed normally';
|
|
END IF;
|
|
|
|
-- Additional check: If we have any old migration names, update them
|
|
IF EXISTS (SELECT 1 FROM _prisma_migrations WHERE migration_name = 'add_user_sessions') THEN
|
|
RAISE NOTICE 'Found old migration name - updating to new format';
|
|
UPDATE _prisma_migrations
|
|
SET migration_name = '20251005000000_add_user_sessions'
|
|
WHERE migration_name = 'add_user_sessions';
|
|
RAISE NOTICE 'Old migration name updated';
|
|
END IF;
|
|
|
|
END $$;
|