modules/devops/Write-MigrationScript.ps1

param(
    [string]$ProjectName,
    [string]$OrmMode,
    [string]$OutputPath
)

. (Join-Path (Split-Path $MyInvocation.MyCommand.Path) "..\core\Utils.ps1")

# Migration script sadece EFCore veya Hybrid modda üretilir
if ($OrmMode -notmatch "EFCore|Hybrid") { return }

function Write-File($rel, $con) { Write-CoreFile (Join-Path $OutputPath $rel) $con }

Write-File "scripts\migrate.ps1" @"
#Requires -Version 5.1
# EF Core Migration Helper — $ProjectName
# Kullanim: .\scripts\migrate.ps1 [-MigrationName <ad>] [-Revert]

param(
    [string]`$MigrationName = "Initial",
    [switch]`$Revert
)

`$persistenceProj = "src\$ProjectName.Persistence"
`$startupProj = "src\$ProjectName.WebApi"

if (`$Revert) {
    Write-Host "Son migration geri aliniyor..." -ForegroundColor Yellow
    dotnet ef database update 0 ``
        --project `$persistenceProj ``
        --startup-project `$startupProj
    Write-Host "Tum migrasyonlar siliniyor..." -ForegroundColor Yellow
    dotnet ef migrations remove ``
        --project `$persistenceProj ``
        --startup-project `$startupProj
    Write-Host "Tamamlandi." -ForegroundColor Green
} else {
    Write-Host "Migration olusturuluyor: `$MigrationName" -ForegroundColor Cyan
    dotnet ef migrations add `$MigrationName ``
        --project `$persistenceProj ``
        --startup-project `$startupProj ``
        --output-dir Migrations

    Write-Host "Veritabani guncelleniyor..." -ForegroundColor Cyan
    dotnet ef database update ``
        --project `$persistenceProj ``
        --startup-project `$startupProj

    Write-Host "Tamamlandi." -ForegroundColor Green
}
"@


Write-File "scripts\migrate.sh" @"
#!/bin/bash
# EF Core Migration Helper — $ProjectName
# Kullanim: ./scripts/migrate.sh [MigrationName] [--revert]

MIGRATION_NAME=${1:-Initial}
PERSISTENCE_PROJ="src/$ProjectName.Persistence"
STARTUP_PROJ="src/$ProjectName.WebApi"

if [ "`$2" = "--revert" ]; then
    echo "Son migration geri aliniyor..."
    dotnet ef database update 0 \
        --project `$PERSISTENCE_PROJ \
        --startup-project `$STARTUP_PROJ
    dotnet ef migrations remove \
        --project `$PERSISTENCE_PROJ \
        --startup-project `$STARTUP_PROJ
    echo "Tamamlandi."
else
    echo "Migration olusturuluyor: `$MIGRATION_NAME"
    dotnet ef migrations add `$MIGRATION_NAME \
        --project `$PERSISTENCE_PROJ \
        --startup-project `$STARTUP_PROJ \
        --output-dir Migrations

    echo "Veritabani guncelleniyor..."
    dotnet ef database update \
        --project `$PERSISTENCE_PROJ \
        --startup-project `$STARTUP_PROJ

    echo "Tamamlandi."
fi
"@