# PowerShell Script zum Setup der Appwrite-Datenbank
# Dieses Skript erstellt die Datenbank und führt das Schema-Setup aus

$ErrorActionPreference = "Continue"

Write-Host "=== Appwrite Datenbank Setup ===" -ForegroundColor Cyan
Write-Host ""

# 1. Prüfe Login-Status
Write-Host "1. Prüfe Appwrite Login-Status..." -ForegroundColor Yellow
$loginCheck = appwrite databases list 2>&1

if ($LASTEXITCODE -ne 0 -and $loginCheck -like "*Session not found*") {
    Write-Host "   [WARNUNG] Nicht eingeloggt. Bitte zuerst einloggen:" -ForegroundColor Red
    Write-Host "   appwrite login" -ForegroundColor White
    Write-Host ""
    Write-Host "   Führe diesen Befehl jetzt aus..." -ForegroundColor Yellow
    appwrite login
    Write-Host ""
}

# 2. Erstelle oder verwende vorhandene Datenbank
$DATABASE_ID = "eship-db"
$DATABASE_NAME = "eship-database"

Write-Host "2. Prüfe ob Datenbank '$DATABASE_ID' existiert..." -ForegroundColor Yellow

# Versuche die Datenbank zu finden
$dbList = appwrite databases list 2>&1
$dbExists = $dbList -like "*$DATABASE_ID*"

if (-not $dbExists) {
    Write-Host "   Datenbank nicht gefunden. Erstelle neue Datenbank..." -ForegroundColor Yellow
    $createResult = appwrite databases create --name $DATABASE_NAME --database-id $DATABASE_ID 2>&1
    
    if ($LASTEXITCODE -eq 0) {
        Write-Host "   [OK] Datenbank '$DATABASE_ID' erfolgreich erstellt!" -ForegroundColor Green
    } else {
        Write-Host "   [WARNUNG] Fehler beim Erstellen der Datenbank." -ForegroundColor Yellow
        Write-Host "   Verwende ID: $DATABASE_ID" -ForegroundColor Gray
        Write-Host "   Stelle sicher, dass die Datenbank-ID korrekt ist." -ForegroundColor Yellow
    }
} else {
    Write-Host "   [OK] Datenbank '$DATABASE_ID' existiert bereits!" -ForegroundColor Green
}

Write-Host ""
Write-Host "3. Erstelle Datenbank-Schema..." -ForegroundColor Yellow
Write-Host "   Dies kann einige Minuten dauern..." -ForegroundColor Gray
Write-Host ""

# Aktualisiere DATABASE_ID im Bash-Skript
$schemaScriptContent = Get-Content "appwrite_schema.sh" -Raw -Encoding UTF8
$oldDatabaseIdPattern = 'DATABASE_ID="YOUR_DATABASE_ID"'
$newDatabaseIdValue = "DATABASE_ID=`"$DATABASE_ID`""
$schemaScriptContent = $schemaScriptContent -replace [regex]::Escape($oldDatabaseIdPattern), $newDatabaseIdValue
Set-Content -Path "appwrite_schema.sh" -Value $schemaScriptContent -NoNewline -Encoding UTF8

Write-Host "   DATABASE_ID im Schema-Skript auf '$DATABASE_ID' gesetzt" -ForegroundColor Green
Write-Host ""

# Prüfe ob Git Bash oder WSL verfügbar ist
$bashPath = $null
$useBash = $false

# Versuche Git Bash zu finden
if (Test-Path "C:\Program Files\Git\bin\bash.exe") {
    $bashPath = "C:\Program Files\Git\bin\bash.exe"
    $useBash = $true
} elseif (Test-Path "C:\Program Files (x86)\Git\bin\bash.exe") {
    $bashPath = "C:\Program Files (x86)\Git\bin\bash.exe"
    $useBash = $true
} else {
    # Prüfe ob WSL verfügbar ist
    $wslCheck = wsl --list 2>&1
    if ($LASTEXITCODE -eq 0) {
        $useBash = $true
        $bashPath = "wsl"
    }
}

if ($useBash) {
    Write-Host "4. Führe Schema-Skript aus (über Bash)..." -ForegroundColor Yellow
    Write-Host ""
    
    $scriptPath = (Resolve-Path "appwrite_schema.sh").Path
    
    if ($bashPath -eq "wsl") {
        # Konvertiere Windows-Pfad zu WSL-Pfad
        $driveLetter = $scriptPath.Substring(0, 1).ToLower()
        $remainingPath = $scriptPath.Substring(3) -replace '\\', '/'
        $wslPath = "/mnt/$driveLetter$remainingPath"
        wsl bash $wslPath
    } else {
        & $bashPath $scriptPath
    }
    
    if ($LASTEXITCODE -eq 0) {
        Write-Host ""
        Write-Host "[OK] Schema-Setup erfolgreich abgeschlossen!" -ForegroundColor Green
    } else {
        Write-Host ""
        Write-Host "[WARNUNG] Schema-Setup abgeschlossen (einige Fehler wurden ignoriert)" -ForegroundColor Yellow
    }
} else {
    Write-Host "4. Bash nicht gefunden." -ForegroundColor Yellow
    Write-Host ""
    Write-Host "   Option 1: Installiere Git Bash und führe dann aus:" -ForegroundColor White
    Write-Host "   bash appwrite_schema.sh" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "   Option 2: Siehe DATABASE_SETUP.md für manuelle Anweisungen" -ForegroundColor White
    Write-Host ""
}

Write-Host ""
Write-Host "=== Setup abgeschlossen ===" -ForegroundColor Cyan
Write-Host ""
Write-Host "Datenbank-ID: $DATABASE_ID" -ForegroundColor White
Write-Host "Du kannst die Datenbank in der Appwrite-Konsole überprüfen." -ForegroundColor Gray
