# Church SongLyric - Remote Health Check Script
# Usage: .\health-check.ps1 [url]
# Example: .\health-check.ps1 http://yourhost.noip.org:5000

param(
    [string]$Url = "http://localhost:5000"
)

$separator = "=" * 60
Write-Host $separator -ForegroundColor Cyan
Write-Host "Church SongLyric - Health Check" -ForegroundColor Green
Write-Host $separator -ForegroundColor Cyan
Write-Host ""

$healthUrl = "$Url/api/health"
$pingUrl = "$Url/api/ping"
$rootUrl = "$Url/"

Write-Host "[1/3] Testing Root Endpoint..." -ForegroundColor Yellow
try {
    $response = Invoke-RestMethod -Uri $rootUrl -TimeoutSec 5 -ErrorAction Stop
    Write-Host "  [OK] Success" -ForegroundColor Green
    Write-Host "  Message: $($response.message)" -ForegroundColor Gray
    Write-Host "  Port: $($response.port)" -ForegroundColor Gray
} catch {
    Write-Host "  [FAIL] Failed: $($_.Exception.Message)" -ForegroundColor Red
}

Write-Host ""
Write-Host "[2/3] Testing Health Endpoint..." -ForegroundColor Yellow
try {
    $response = Invoke-RestMethod -Uri $healthUrl -TimeoutSec 5 -ErrorAction Stop
    Write-Host "  [OK] Success" -ForegroundColor Green
    Write-Host "  Status: $($response.status)" -ForegroundColor Gray
    Write-Host "  Timestamp: $($response.ts)" -ForegroundColor Gray
    if ($response.uptime_ms) {
        $uptimeSeconds = [math]::Round($response.uptime_ms / 1000, 2)
        Write-Host "  Uptime: ${uptimeSeconds}s" -ForegroundColor Gray
    }
} catch {
    Write-Host "  [FAIL] Failed: $($_.Exception.Message)" -ForegroundColor Red
}

Write-Host ""
Write-Host "[3/3] Testing Ping Endpoint..." -ForegroundColor Yellow
try {
    $response = Invoke-RestMethod -Uri $pingUrl -TimeoutSec 5 -ErrorAction Stop
    Write-Host "  [OK] Success" -ForegroundColor Green
    Write-Host "  Pong: $($response.pong)" -ForegroundColor Gray
    Write-Host "  Timestamp: $($response.ts)" -ForegroundColor Gray
} catch {
    Write-Host "  [FAIL] Failed: $($_.Exception.Message)" -ForegroundColor Red
}

Write-Host ""
Write-Host $separator -ForegroundColor Cyan
Write-Host "Health check complete!" -ForegroundColor Green
Write-Host $separator -ForegroundColor Cyan
