# PostgreSQL Installation Script # Installs PostgreSQL 16 for Windows $password = "ay8hNQ!" $installDir = "C:\PostgreSQL\16" $dataDir = "C:\PostgreSQL\16\data" $port = 5432 Write-Host "Installing PostgreSQL 16..." -ForegroundColor Green # Download PostgreSQL installer $installerUrl = "https://sbp.enterprisedb.com/getfile.jsp?fileid=1258893" $installerPath = "$env:TEMP\postgresql-16-windows-x64.exe" Write-Host "Downloading PostgreSQL installer..." try { Invoke-WebRequest -Uri $installerUrl -OutFile $installerPath -UseBasicParsing Write-Host "Download complete!" -ForegroundColor Green } catch { Write-Host "Error downloading installer: $_" -ForegroundColor Red Write-Host "Please download manually from: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads" -ForegroundColor Yellow exit 1 } # Install PostgreSQL silently Write-Host "Installing PostgreSQL (this may take a few minutes)..." $installArgs = @( "--mode", "unattended", "--unattendedmodeui", "none", "--superpassword", $password, "--serverport", $port, "--prefix", $installDir, "--datadir", $dataDir, "--servicename", "postgresql-16", "--enable-components", "server,commandlinetools" ) try { Start-Process -FilePath $installerPath -ArgumentList $installArgs -Wait -NoNewWindow Write-Host "PostgreSQL installed successfully!" -ForegroundColor Green } catch { Write-Host "Error during installation: $_" -ForegroundColor Red exit 1 } # Add PostgreSQL to PATH $pgBin = "$installDir\bin" $currentPath = [Environment]::GetEnvironmentVariable("Path", "Machine") if ($currentPath -notlike "*$pgBin*") { Write-Host "Adding PostgreSQL to PATH..." [Environment]::SetEnvironmentVariable("Path", "$currentPath;$pgBin", "Machine") $env:Path += ";$pgBin" } Write-Host "`nPostgreSQL installed successfully!" -ForegroundColor Green Write-Host "Location: $installDir" -ForegroundColor Cyan Write-Host "Port: $port" -ForegroundColor Cyan Write-Host "Password: $password" -ForegroundColor Cyan # Test connection Write-Host "`nTesting connection..." Start-Sleep -Seconds 5 $env:PGPASSWORD = $password & "$pgBin\psql.exe" -U postgres -c "SELECT version();" 2>&1 | Out-Null if ($LASTEXITCODE -eq 0) { Write-Host "PostgreSQL is running!" -ForegroundColor Green } else { Write-Host "Warning: Could not connect to PostgreSQL. Service may still be starting..." -ForegroundColor Yellow } Write-Host "`nNext steps:" -ForegroundColor Green Write-Host "1. Database will be created automatically" Write-Host "2. Run migrations from: C:\DEV\COPILOT\geutebruck-api\src\api" Write-Host "3. Command: alembic upgrade head"