# 🚀 Safe Database Migration Script A clean, focused script for safe database migrations with automatic backup and cleanup. ## 📋 Features - ✅ **Connectivity Check**: Verifies database connection before proceeding - ✅ **Automatic Backup**: Creates backup with retry logic (3 attempts) - ✅ **Safety First**: Exits if backup fails - no migration without backup - ✅ **Smart PostgreSQL**: Uses Docker PostgreSQL client if `psql` not available - ✅ **Migration**: Runs Entity Framework migrations - ✅ **Verification**: Checks migration success - ✅ **Cleanup**: Keeps only last 5 backups per environment ## 🛠️ Usage ```bash # Development environment ./safe-migrate.sh Development # Sandbox environment ./safe-migrate.sh Sandbox # Production environment ./safe-migrate.sh Production ``` ## 🔄 Process Flow 1. **Environment Validation**: Validates environment parameter 2. **Connectivity Check**: Tests database connection 3. **Backup Creation**: Creates backup with retry logic 4. **Migration**: Runs pending migrations 5. **Verification**: Checks migration success 6. **Cleanup**: Removes old backups (keeps last 5) ## 🚨 Safety Features - **Mandatory Backup**: Script exits if backup cannot be created - **Retry Logic**: 3 backup attempts with 5-second delays - **Error Handling**: Clear error messages and exit codes - **Logging**: Detailed logs for troubleshooting ## 📊 Output ``` ✅ Database connectivity test passed ✅ Database backup created: ./backups/managing_Development_backup_20250726_043047.sql ✅ Database migration completed successfully ✅ Database schema verification passed ✅ Kept last 5 backups for Development environment ``` ## 🔧 Prerequisites - Docker (for PostgreSQL client) - .NET 8.0 SDK - Access to target database ## 📁 Files - **Backups**: `./backups/managing_[Environment]_backup_[Timestamp].sql` - **Logs**: `./migration_[Environment]_[Timestamp].log`