MIF_E31230892/migrate_helper.ps1

203 lines
6.7 KiB
PowerShell

# Migration Helper Script for Windows PowerShell
# Usage: .\migrate_helper.ps1 [action]
param(
[string]$action = "help"
)
$simdDir = "sim-pkpps"
function Show-Header {
Write-Host "╔══════════════════════════════════════════════════════╗" -ForegroundColor Cyan
Write-Host "║ SIM Pondok Pesantren - Kelas Migration ║" -ForegroundColor Cyan
Write-Host "╚══════════════════════════════════════════════════════╝" -ForegroundColor Cyan
Write-Host ""
}
function Show-Help {
Show-Header
Write-Host "Available actions:" -ForegroundColor Yellow
Write-Host ""
Write-Host " install - Run migrations and seeders" -ForegroundColor Green
Write-Host " migrate-test - Test data migration (dry-run)" -ForegroundColor Green
Write-Host " migrate - Run actual data migration" -ForegroundColor Green
Write-Host " scan - Scan codebase for kelas usage" -ForegroundColor Green
Write-Host " report - Open refactoring report" -ForegroundColor Green
Write-Host " verify - Verify migration status" -ForegroundColor Green
Write-Host " help - Show this help message" -ForegroundColor Green
Write-Host ""
Write-Host "Examples:" -ForegroundColor Yellow
Write-Host " .\migrate_helper.ps1 install" -ForegroundColor Gray
Write-Host " .\migrate_helper.ps1 migrate-test" -ForegroundColor Gray
Write-Host " .\migrate_helper.ps1 scan" -ForegroundColor Gray
Write-Host ""
}
function Run-Install {
Show-Header
Write-Host "📦 Installing new kelas system..." -ForegroundColor Yellow
Write-Host ""
Write-Host "Step 1: Running migrations..." -ForegroundColor Cyan
Set-Location $simdDir
php artisan migrate
Write-Host "✓ Migrations completed" -ForegroundColor Green
Write-Host ""
Write-Host "Step 2: Seeding kelompok kelas..." -ForegroundColor Cyan
php artisan db:seed --class=KelompokKelasSeeder
Write-Host "✓ Kelompok kelas seeded" -ForegroundColor Green
Write-Host ""
Write-Host "Step 3: Seeding kelas..." -ForegroundColor Cyan
php artisan db:seed --class=KelasSeeder
Write-Host "✓ Kelas seeded" -ForegroundColor Green
Write-Host ""
Set-Location ..
Write-Host "✓ Installation completed!" -ForegroundColor Green
Write-Host ""
Write-Host "Next steps:" -ForegroundColor Yellow
Write-Host " 1. Run: .\migrate_helper.ps1 migrate-test" -ForegroundColor Gray
Write-Host " 2. If OK, run: .\migrate_helper.ps1 migrate" -ForegroundColor Gray
Write-Host ""
}
function Run-MigrateTest {
Show-Header
Write-Host "🔍 Testing data migration (dry-run)..." -ForegroundColor Yellow
Write-Host ""
Set-Location $simdDir
php artisan migrate:santri-kelas --dry-run
Set-Location ..
Write-Host ""
Write-Host "If everything looks good:" -ForegroundColor Yellow
Write-Host " Run: .\migrate_helper.ps1 migrate" -ForegroundColor Gray
Write-Host ""
}
function Run-Migrate {
Show-Header
Write-Host "⚠️ This will migrate santri kelas data to new system" -ForegroundColor Yellow
Write-Host ""
$confirm = Read-Host "Are you sure? (yes/no)"
if ($confirm -eq "yes") {
Write-Host ""
Write-Host "🚀 Running migration..." -ForegroundColor Cyan
Set-Location $simdDir
php artisan migrate:santri-kelas
Set-Location ..
Write-Host ""
Write-Host "✓ Migration completed!" -ForegroundColor Green
Write-Host ""
Write-Host "Next steps:" -ForegroundColor Yellow
Write-Host " 1. Run: .\migrate_helper.ps1 verify" -ForegroundColor Gray
Write-Host " 2. Run: .\migrate_helper.ps1 scan" -ForegroundColor Gray
Write-Host ""
} else {
Write-Host "Migration cancelled" -ForegroundColor Yellow
}
}
function Run-Scan {
Show-Header
Write-Host "🔍 Scanning codebase for kelas usage..." -ForegroundColor Yellow
Write-Host ""
php scan_kelas_usage.php
Write-Host ""
Write-Host "✓ Scan completed!" -ForegroundColor Green
Write-Host ""
Write-Host "Review the reports:" -ForegroundColor Yellow
Write-Host " - KELAS_USAGE_MAP.md (detailed map)" -ForegroundColor Gray
Write-Host " - REFACTORING_GUIDE.md (quick reference)" -ForegroundColor Gray
Write-Host ""
Write-Host "Open report? (yes/no)" -ForegroundColor Yellow
$openReport = Read-Host
if ($openReport -eq "yes") {
code KELAS_USAGE_MAP.md
}
}
function Run-Verify {
Show-Header
Write-Host "📊 Verifying migration status..." -ForegroundColor Yellow
Write-Host ""
Set-Location $simdDir
Write-Host "Migration status:" -ForegroundColor Cyan
php artisan migrate:status | Select-String "kelompok_kelas|kelas|santri_kelas|kegiatan_kelas"
Write-Host ""
Write-Host "Checking data counts:" -ForegroundColor Cyan
php artisan tinker --execute="echo 'Kelompok Kelas: ' . App\Models\KelompokKelas::count() . PHP_EOL;"
php artisan tinker --execute="echo 'Kelas: ' . App\Models\Kelas::count() . PHP_EOL;"
php artisan tinker --execute="echo 'Santri Kelas: ' . App\Models\SantriKelas::count() . PHP_EOL;"
php artisan tinker --execute="echo 'Santri with old kelas: ' . App\Models\Santri::whereNotNull('kelas')->count() . PHP_EOL;"
Write-Host ""
Set-Location ..
Write-Host "✓ Verification completed!" -ForegroundColor Green
Write-Host ""
}
function Open-Report {
Show-Header
Write-Host "📖 Opening refactoring reports..." -ForegroundColor Yellow
Write-Host ""
if (Test-Path "KELAS_USAGE_MAP.md") {
code KELAS_USAGE_MAP.md
Write-Host "✓ Opened KELAS_USAGE_MAP.md" -ForegroundColor Green
} else {
Write-Host "⚠️ KELAS_USAGE_MAP.md not found. Run scan first." -ForegroundColor Yellow
}
if (Test-Path "REFACTORING_GUIDE.md") {
code REFACTORING_GUIDE.md
Write-Host "✓ Opened REFACTORING_GUIDE.md" -ForegroundColor Green
}
Write-Host ""
}
# Main script execution
switch ($action.ToLower()) {
"install" {
Run-Install
}
"migrate-test" {
Run-MigrateTest
}
"migrate" {
Run-Migrate
}
"scan" {
Run-Scan
}
"verify" {
Run-Verify
}
"report" {
Open-Report
}
"help" {
Show-Help
}
default {
Write-Host "Unknown action: $action" -ForegroundColor Red
Write-Host ""
Show-Help
}
}