Files
IBKRTrader/scripts/provision-db.ps1
T
Richard c5ff4e17aa @
DB-Provisioning-Skripte (Drop-Alt-Tabellen + EF-Migrationen anwenden)

- scripts/drop-app-tables.sql: entfernt alte (snake_case) core_/ct_-Tabellen + EF-Historie,
  damit die EF-Migrationen kollisionsfrei angewendet werden koennen
- scripts/provision-db.ps1: liest Connection aus appsettings.Local.json, setzt IBKRTRADER_MYSQL,
  wendet CoreDbContext- + CongressTradingDbContext-Migrationen an (dotnet ef database update)
- scripts/README.md: Ablauf + Sicherheitshinweise (Passwort rotieren, Master-Key)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
2026-07-29 09:47:06 +02:00

49 lines
2.2 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<#
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