<# IBKRTrader – DB-Provisioning. Wendet die EF-Core-Migrationen beider Contexts (Core + CongressTrading) auf die Ziel-DB an. Der Connection-String wird aus appsettings.Local.json gelesen und als Umgebungsvariable IBKRTRADER_MYSQL an die Design-Time-Factories weitergereicht. WICHTIG: Falls von frueheren Laeufen noch alte (snake_case) Tabellen in der DB liegen, vorher einmalig scripts/drop-app-tables.sql ausfuehren – sonst schlaegt 'database update' fehl (Table already exists). Aufruf (aus dem Projekt-Root): powershell -ExecutionPolicy Bypass -File scripts/provision-db.ps1 #> $ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot # 1. Connection-String aus appsettings.Local.json lesen. $localPath = Join-Path $root 'appsettings.Local.json' if (-not (Test-Path $localPath)) { Write-Error "appsettings.Local.json nicht gefunden ($localPath). Datei mit Database:MySqlConnectionString anlegen." exit 1 } $conn = (Get-Content $localPath -Raw | ConvertFrom-Json).Database.MySqlConnectionString if ([string]::IsNullOrWhiteSpace($conn)) { Write-Error "Database:MySqlConnectionString in appsettings.Local.json ist leer." exit 1 } $env:IBKRTRADER_MYSQL = $conn Write-Host "Connection aus appsettings.Local.json geladen." -ForegroundColor Green # 2. dotnet-ef vorhanden? try { dotnet ef --version | Out-Null } catch { Write-Error "dotnet-ef fehlt. Installieren mit: dotnet tool install --global dotnet-ef" exit 1 } # 3. Migrationen anwenden – Core, dann Modul. Write-Host "Wende CoreDbContext-Migrationen an..." -ForegroundColor Cyan dotnet ef database update --project src/IBKRTrader.Core --startup-project src/IBKRTrader.Core --context CoreDbContext if ($LASTEXITCODE -ne 0) { Write-Error "CoreDbContext-Migration fehlgeschlagen."; exit 1 } Write-Host "Wende CongressTradingDbContext-Migrationen an..." -ForegroundColor Cyan dotnet ef database update --project src/IBKRTrader.Modules.CongressTrading --startup-project src/IBKRTrader.Modules.CongressTrading --context CongressTradingDbContext if ($LASTEXITCODE -ne 0) { Write-Error "CongressTradingDbContext-Migration fehlgeschlagen."; exit 1 } Write-Host "DB-Provisioning abgeschlossen." -ForegroundColor Green