@echo off REM Multi-Household Migration Runner (Windows) REM This script handles the complete migration process with safety checks setlocal enabledelayedexpansion REM Database configuration set DB_USER=postgres set DB_HOST=192.168.7.112 set DB_NAME=grocery set PGPASSWORD=Asdwed123A. set BACKUP_DIR=backend\migrations\backups set TIMESTAMP=%date:~-4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2% set TIMESTAMP=%TIMESTAMP: =0% set BACKUP_FILE=%BACKUP_DIR%\backup_%TIMESTAMP%.sql echo ================================================ echo Multi-Household Architecture Migration echo ================================================ echo. REM Create backup directory if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%" REM Step 1: Backup (SKIPPED - using database template copy) echo [1/5] Backup: SKIPPED (using 'grocery' database copy) echo. REM Step 2: Show current stats echo [2/5] Current database statistics: psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% -c "SELECT 'Users' as table_name, COUNT(*) as count FROM users UNION ALL SELECT 'Grocery Items', COUNT(*) FROM grocery_list UNION ALL SELECT 'Classifications', COUNT(*) FROM item_classification UNION ALL SELECT 'History Records', COUNT(*) FROM grocery_history;" echo. REM Step 3: Confirm echo [3/5] Ready to run migration echo Database: %DB_NAME% on %DB_HOST% echo Backup: %BACKUP_FILE% echo. set /p CONFIRM="Continue with migration? (yes/no): " if /i not "%CONFIRM%"=="yes" ( echo Migration cancelled. exit /b 0 ) echo. REM Step 4: Run migration echo [4/5] Running migration script... psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% -f backend\migrations\multi_household_architecture.sql if %errorlevel% neq 0 ( echo [ERROR] Migration failed! Rolling back... echo Restoring from backup: %BACKUP_FILE% psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% < "%BACKUP_FILE%" exit /b 1 ) echo [OK] Migration completed successfully echo. REM Step 5: Verification echo [5/5] Verifying migration... psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% -c "SELECT id, name, invite_code FROM households;" psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% -c "SELECT u.id, u.username, u.role as system_role, hm.role as household_role FROM users u LEFT JOIN household_members hm ON u.id = hm.user_id ORDER BY u.id LIMIT 10;" psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% -c "SELECT 'Items' as metric, COUNT(*)::text as count FROM items UNION ALL SELECT 'Household Lists', COUNT(*)::text FROM household_lists UNION ALL SELECT 'Classifications', COUNT(*)::text FROM household_item_classifications UNION ALL SELECT 'History Records', COUNT(*)::text FROM household_list_history;" echo. echo ================================================ echo Migration Complete! echo ================================================ echo. echo Next Steps: echo 1. Review verification results above echo 2. Test the application echo 3. If issues found, rollback with: echo psql -h %DB_HOST% -U %DB_USER% -d %DB_NAME% ^< %BACKUP_FILE% echo 4. If successful, proceed to Sprint 2 (Backend API) echo. echo Backup location: %BACKUP_FILE% echo. pause