photum/backend/setup.ps1

100 lines
3.3 KiB
PowerShell

# Script de setup para Photum Backend
param(
[Parameter(Position=0)]
[string]$Command = "help"
)
function Show-Help {
Write-Host "=== Photum Backend - Comandos Disponíveis ===" -ForegroundColor Cyan
Write-Host ""
Write-Host " db-up " -ForegroundColor Green -NoNewline
Write-Host "Inicia o banco de dados PostgreSQL"
Write-Host " db-down " -ForegroundColor Green -NoNewline
Write-Host "Para o banco de dados"
Write-Host " db-reset " -ForegroundColor Green -NoNewline
Write-Host "Reseta o banco de dados (apaga todos os dados)"
Write-Host " sqlc-generate " -ForegroundColor Green -NoNewline
Write-Host "Gera código Go a partir das queries SQL"
Write-Host " swagger " -ForegroundColor Green -NoNewline
Write-Host "Gera documentação Swagger"
Write-Host " run " -ForegroundColor Green -NoNewline
Write-Host "Executa a aplicação"
Write-Host " dev " -ForegroundColor Green -NoNewline
Write-Host "Inicia ambiente de desenvolvimento completo"
Write-Host " test " -ForegroundColor Green -NoNewline
Write-Host "Executa os testes"
Write-Host ""
Write-Host "Uso: .\setup.ps1 <comando>" -ForegroundColor Yellow
Write-Host ""
}
function Start-Database {
Write-Host "Iniciando banco de dados PostgreSQL..." -ForegroundColor Cyan
docker-compose up -d
Write-Host "Aguardando banco de dados ficar pronto..." -ForegroundColor Yellow
Start-Sleep -Seconds 5
Write-Host "Banco de dados pronto!" -ForegroundColor Green
}
function Stop-Database {
Write-Host "Parando banco de dados..." -ForegroundColor Cyan
docker-compose down
Write-Host "Banco de dados parado!" -ForegroundColor Green
}
function Reset-Database {
Write-Host "Resetando banco de dados..." -ForegroundColor Cyan
docker-compose down -v
docker-compose up -d
Write-Host "Aguardando banco de dados ficar pronto..." -ForegroundColor Yellow
Start-Sleep -Seconds 5
Write-Host "Banco de dados resetado!" -ForegroundColor Green
}
function Generate-SQLC {
Write-Host "Gerando código Go a partir das queries SQL..." -ForegroundColor Cyan
sqlc generate
Write-Host "Código gerado com sucesso!" -ForegroundColor Green
}
function Generate-Swagger {
Write-Host "Gerando documentação Swagger..." -ForegroundColor Cyan
swag init -g cmd/api/main.go -o docs
Write-Host "Documentação Swagger gerada!" -ForegroundColor Green
}
function Start-Application {
Write-Host "Iniciando aplicação..." -ForegroundColor Cyan
go run cmd/api/main.go
}
function Start-Dev {
Write-Host "=== Iniciando ambiente de desenvolvimento ===" -ForegroundColor Cyan
Start-Database
Generate-SQLC
Generate-Swagger
Start-Application
}
function Run-Tests {
Write-Host "Executando testes..." -ForegroundColor Cyan
go test -v ./...
}
switch ($Command.ToLower()) {
"help" { Show-Help }
"db-up" { Start-Database }
"db-down" { Stop-Database }
"db-reset" { Reset-Database }
"sqlc-generate" { Generate-SQLC }
"swagger" { Generate-Swagger }
"run" { Start-Application }
"dev" { Start-Dev }
"test" { Run-Tests }
default {
Write-Host "Comando desconhecido: $Command" -ForegroundColor Red
Write-Host ""
Show-Help
}
}