|
|
|
# Database Migration Script
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
|
|
|
|
function Write-Status {
|
|
|
|
param(
|
|
|
|
[string]$Message,
|
|
|
|
[string]$Status = "Info"
|
|
|
|
)
|
|
|
|
|
|
|
|
$color = switch ($Status) {
|
|
|
|
"Success" { "Green" }
|
|
|
|
"Error" { "Red" }
|
|
|
|
"Warning" { "Yellow" }
|
|
|
|
default { "White" }
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Host "[$Status] $Message" -ForegroundColor $color
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
# Check if projects exist
|
|
|
|
if (-not (Test-Path "src/X1.Infrastructure")) {
|
|
|
|
throw "Infrastructure project not found"
|
|
|
|
}
|
|
|
|
if (-not (Test-Path "src/X1.WebAPI")) {
|
|
|
|
throw "WebAPI project not found"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Build project
|
|
|
|
Write-Status "Building project..." "Info"
|
|
|
|
dotnet build "src/X1.Infrastructure" -c Release
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
|
|
throw "Project build failed"
|
|
|
|
}
|
|
|
|
Write-Status "Project built successfully" "Success"
|
|
|
|
|
|
|
|
# Add migration
|
|
|
|
Write-Status "Adding database migration..." "Info"
|
|
|
|
$migrationName = "AddRealNameToAppUser"
|
|
|
|
dotnet ef migrations add $migrationName --project src/X1.Infrastructure --startup-project src/X1.WebAPI
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
|
|
throw "Failed to add migration"
|
|
|
|
}
|
|
|
|
Write-Status "Migration added successfully" "Success"
|
|
|
|
|
|
|
|
# Update database
|
|
|
|
Write-Status "Updating database..." "Info"
|
|
|
|
dotnet ef database update --project src/X1.Infrastructure --startup-project src/X1.WebAPI
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
|
|
throw "Database update failed"
|
|
|
|
}
|
|
|
|
Write-Status "Database updated successfully" "Success"
|
|
|
|
|
|
|
|
} catch {
|
|
|
|
Write-Status "Error occurred: $_" "Error"
|
|
|
|
exit 1
|
|
|
|
}
|