# Script de migração do BoltDB para arquivo SQL
# Este script gera um arquivo SQL com comandos INSERT para migrar dados

Write-Host "=== Migração BoltDB para SQL ===" -ForegroundColor Green
Write-Host ""

# Verificar se o arquivo BoltDB existe
if (-not (Test-Path "data/yasuc.db")) {
    Write-Host "Arquivo BoltDB não encontrado: data/yasuc.db" -ForegroundColor Red
    Write-Host "Certifique-se de que o arquivo existe antes de executar a migração." -ForegroundColor Yellow
    exit 1
}

Write-Host "Arquivo BoltDB encontrado: data/yasuc.db" -ForegroundColor Green

# Verificar se Go está instalado
try {
    $null = Get-Command go -ErrorAction Stop
    Write-Host "Go encontrado, compilando script de migração..." -ForegroundColor Yellow
} catch {
    Write-Host "Go não encontrado. Instale o Go para executar a migração." -ForegroundColor Red
    exit 1
}

# Compilar o script de migração
Write-Host "Compilando script de migração..." -ForegroundColor Yellow
go build -o migrate-to-sql.exe cmd/migrate-to-sql/main.go

if ($LASTEXITCODE -ne 0) {
    Write-Host "Erro ao compilar script de migração." -ForegroundColor Red
    exit 1
}

# Executar migração
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$sqlFile = "data/migration_$timestamp.sql"

Write-Host "Executando migração..." -ForegroundColor Yellow
Write-Host "Arquivo SQL de saída: $sqlFile" -ForegroundColor Cyan

./migrate-to-sql.exe -bolt data/yasuc.db -output $sqlFile

if ($LASTEXITCODE -eq 0) {
    Write-Host ""
    Write-Host "=== Migração concluída com sucesso! ===" -ForegroundColor Green
    Write-Host ""
    Write-Host "Arquivo SQL gerado: $sqlFile" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "Para aplicar a migração ao banco SQLite3:" -ForegroundColor Yellow
    Write-Host "sqlite3 data/yasuc.sqlite3 < $sqlFile" -ForegroundColor White
    Write-Host ""
    Write-Host "Ou se você tiver o SQLite3 instalado no Windows:" -ForegroundColor Yellow
    Write-Host "Get-Content $sqlFile | sqlite3 data/yasuc.sqlite3" -ForegroundColor White
    Write-Host ""
    Write-Host "Para verificar o conteúdo do arquivo SQL:" -ForegroundColor Yellow
    Write-Host "Get-Content $sqlFile | Select-Object -First 20" -ForegroundColor White
} else {
    Write-Host "Erro durante a migração." -ForegroundColor Red
    exit 1
}

# Limpar arquivo temporário
Remove-Item migrate-to-sql.exe -ErrorAction SilentlyContinue 