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:
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user