Atualiza o banco de dados YASUC, refletindo alterações na estrutura e dados. Esta modificação é parte do processo contínuo de melhorias e otimizações do sistema.

This commit is contained in:
Luiz Costa
2025-08-29 10:17:38 -03:00
parent b73b98b129
commit 45accf257d
9 changed files with 54294 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
# Script para aplicar migração SQL ao banco SQLite3
# Este script aplica o arquivo SQL gerado pela migração
param(
[string]$SqlFile = "",
[string]$Database = "data/yasuc.sqlite3"
)
Write-Host "=== Aplicar Migração SQL ===" -ForegroundColor Green
Write-Host ""
# Se não foi especificado arquivo SQL, procurar o mais recente
if ($SqlFile -eq "") {
$latestMigration = Get-ChildItem "data/migration_*.sql" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($latestMigration) {
$SqlFile = $latestMigration.FullName
Write-Host "Usando arquivo SQL mais recente: $SqlFile" -ForegroundColor Yellow
} else {
Write-Host "Nenhum arquivo de migração encontrado em data/migration_*.sql" -ForegroundColor Red
Write-Host "Execute primeiro: scripts/migrate-to-sql.ps1" -ForegroundColor Yellow
exit 1
}
}
# Verificar se o arquivo SQL existe
if (-not (Test-Path $SqlFile)) {
Write-Host "Arquivo SQL não encontrado: $SqlFile" -ForegroundColor Red
exit 1
}
Write-Host "Arquivo SQL: $SqlFile" -ForegroundColor Cyan
Write-Host "Banco de dados: $Database" -ForegroundColor Cyan
Write-Host ""
# Verificar se o banco SQLite3 existe
if (-not (Test-Path $Database)) {
Write-Host "Banco SQLite3 não encontrado. Criando novo banco..." -ForegroundColor Yellow
# Criar diretório se não existir
$dbDir = Split-Path $Database -Parent
if (-not (Test-Path $dbDir)) {
New-Item -ItemType Directory -Path $dbDir -Force | Out-Null
}
# Criar banco vazio
New-Item -ItemType File -Path $Database -Force | Out-Null
Write-Host "Banco SQLite3 criado: $Database" -ForegroundColor Green
}
# Verificar se sqlite3 está disponível
try {
$null = Get-Command sqlite3 -ErrorAction Stop
Write-Host "SQLite3 encontrado, aplicando migração..." -ForegroundColor Yellow
} catch {
Write-Host "SQLite3 não encontrado. Instale o SQLite3 para aplicar a migração." -ForegroundColor Red
Write-Host "Você pode baixar em: https://www.sqlite.org/download.html" -ForegroundColor Yellow
exit 1
}
# Fazer backup do banco atual se existir
if ((Test-Path $Database) -and (Get-Item $Database).Length -gt 0) {
$backupFile = "$Database.backup.$(Get-Date -Format 'yyyyMMdd_HHmmss')"
Copy-Item $Database $backupFile
Write-Host "Backup criado: $backupFile" -ForegroundColor Yellow
}
# Aplicar migração
Write-Host "Aplicando migração..." -ForegroundColor Yellow
Get-Content $SqlFile | sqlite3 $Database
if ($LASTEXITCODE -eq 0) {
Write-Host ""
Write-Host "=== Migração aplicada com sucesso! ===" -ForegroundColor Green
Write-Host ""
# Verificar resultado
$result = sqlite3 $Database "SELECT COUNT(*) as total_pastes, SUM(LENGTH(content)) as total_size FROM pastes;"
Write-Host "Resultado da migração:" -ForegroundColor Cyan
Write-Host $result -ForegroundColor White
Write-Host ""
Write-Host "Para verificar alguns pastes migrados:" -ForegroundColor Yellow
Write-Host "sqlite3 $Database `"SELECT short_id, substr(content, 1, 50) FROM pastes LIMIT 5;`"" -ForegroundColor White
Write-Host ""
Write-Host "Para iniciar o servidor com os dados migrados:" -ForegroundColor Yellow
Write-Host "./yasuc.exe -db $Database -port 8080 -addr 127.0.0.1" -ForegroundColor White
} else {
Write-Host "Erro ao aplicar migração." -ForegroundColor Red
exit 1
}
+113
View File
@@ -0,0 +1,113 @@
#!/bin/bash
# Script para aplicar migração SQL ao banco SQLite3
# Este script aplica o arquivo SQL gerado pela migração
set -e
SQL_FILE=""
DATABASE="data/yasuc.sqlite3"
# Função para mostrar uso
show_usage() {
echo "Uso: $0 [arquivo_sql] [banco_dados]"
echo " arquivo_sql: Caminho para o arquivo SQL (opcional)"
echo " banco_dados: Caminho para o banco SQLite3 (padrão: $DATABASE)"
echo ""
echo "Se arquivo_sql não for especificado, usa o mais recente em data/migration_*.sql"
}
# Processar argumentos
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
show_usage
exit 0
fi
if [ -n "$1" ]; then
SQL_FILE="$1"
fi
if [ -n "$2" ]; then
DATABASE="$2"
fi
echo "=== Aplicar Migração SQL ==="
echo
# Se não foi especificado arquivo SQL, procurar o mais recente
if [ -z "$SQL_FILE" ]; then
SQL_FILE=$(ls -t data/migration_*.sql 2>/dev/null | head -1)
if [ -n "$SQL_FILE" ]; then
echo "Usando arquivo SQL mais recente: $SQL_FILE"
else
echo "Nenhum arquivo de migração encontrado em data/migration_*.sql"
echo "Execute primeiro: scripts/migrate-to-sql.sh"
exit 1
fi
fi
# Verificar se o arquivo SQL existe
if [ ! -f "$SQL_FILE" ]; then
echo "Arquivo SQL não encontrado: $SQL_FILE"
exit 1
fi
echo "Arquivo SQL: $SQL_FILE"
echo "Banco de dados: $DATABASE"
echo
# Verificar se o banco SQLite3 existe
if [ ! -f "$DATABASE" ]; then
echo "Banco SQLite3 não encontrado. Criando novo banco..."
# Criar diretório se não existir
mkdir -p "$(dirname "$DATABASE")"
# Criar banco vazio
touch "$DATABASE"
echo "Banco SQLite3 criado: $DATABASE"
fi
# Verificar se sqlite3 está disponível
if ! command -v sqlite3 &> /dev/null; then
echo "SQLite3 não encontrado. Instale o SQLite3 para aplicar a migração."
echo "Ubuntu/Debian: sudo apt-get install sqlite3"
echo "CentOS/RHEL: sudo yum install sqlite"
echo "macOS: brew install sqlite"
exit 1
fi
echo "SQLite3 encontrado, aplicando migração..."
# Fazer backup do banco atual se existir e não estiver vazio
if [ -f "$DATABASE" ] && [ -s "$DATABASE" ]; then
BACKUP_FILE="${DATABASE}.backup.$(date +%Y%m%d_%H%M%S)"
cp "$DATABASE" "$BACKUP_FILE"
echo "Backup criado: $BACKUP_FILE"
fi
# Aplicar migração
echo "Aplicando migração..."
sqlite3 "$DATABASE" < "$SQL_FILE"
if [ $? -eq 0 ]; then
echo
echo "=== Migração aplicada com sucesso! ==="
echo
# Verificar resultado
echo "Resultado da migração:"
sqlite3 "$DATABASE" "SELECT COUNT(*) as total_pastes, SUM(LENGTH(content)) as total_size FROM pastes;"
echo
echo "Para verificar alguns pastes migrados:"
echo "sqlite3 $DATABASE \"SELECT short_id, substr(content, 1, 50) FROM pastes LIMIT 5;\""
echo
echo "Para iniciar o servidor com os dados migrados:"
echo "./yasuc -db $DATABASE -port 8080 -addr 127.0.0.1"
else
echo "Erro ao aplicar migração."
exit 1
fi
+63
View File
@@ -0,0 +1,63 @@
# 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
+65
View File
@@ -0,0 +1,65 @@
#!/bin/bash
# Script de migração do BoltDB para arquivo SQL
# Este script gera um arquivo SQL com comandos INSERT para migrar dados
set -e
echo "=== Migração BoltDB para SQL ==="
echo
# Verificar se o arquivo BoltDB existe
if [ ! -f "data/yasuc.db" ]; then
echo "Arquivo BoltDB não encontrado: data/yasuc.db"
echo "Certifique-se de que o arquivo existe antes de executar a migração."
exit 1
fi
echo "Arquivo BoltDB encontrado: data/yasuc.db"
# Verificar se Go está instalado
if ! command -v go &> /dev/null; then
echo "Go não encontrado. Instale o Go para executar a migração."
exit 1
fi
echo "Go encontrado, compilando script de migração..."
# Compilar o script de migração
go build -o migrate-to-sql cmd/migrate-to-sql/main.go
if [ $? -ne 0 ]; then
echo "Erro ao compilar script de migração."
exit 1
fi
# Executar migração
timestamp=$(date +%Y%m%d_%H%M%S)
sqlFile="data/migration_${timestamp}.sql"
echo "Executando migração..."
echo "Arquivo SQL de saída: $sqlFile"
./migrate-to-sql -bolt data/yasuc.db -output "$sqlFile"
if [ $? -eq 0 ]; then
echo
echo "=== Migração concluída com sucesso! ==="
echo
echo "Arquivo SQL gerado: $sqlFile"
echo
echo "Para aplicar a migração ao banco SQLite3:"
echo "sqlite3 data/yasuc.sqlite3 < $sqlFile"
echo
echo "Para verificar o conteúdo do arquivo SQL:"
echo "head -20 $sqlFile"
echo
echo "Para verificar o tamanho do arquivo:"
echo "ls -lh $sqlFile"
else
echo "Erro durante a migração."
exit 1
fi
# Limpar arquivo temporário
rm -f migrate-to-sql