Sobre o projeto
Goose é uma ferramenta de migração de banco de dados distribuída tanto como interface de linha de comando quanto como biblioteca Go. Ela gerencia a evolução do esquema do banco de dados por meio de arquivos de migração incrementais escritos em SQL ou como funções Go.
Os bancos de dados suportados incluem Postgres, MySQL, MariaDB, Spanner, SQLite, YDB, ClickHouse, MSSQL, Vertica, Redshift, TiDB, StarRocks, Turso e Azure SQL. O binário pode ser reduzido excluindo drivers desnecessários por meio de build tags.
A instalação está disponível por meio de `go install`, Homebrew no macOS ou uma compilação personalizada. A configuração pode ser passada como argumentos de comando ou por meio de variáveis de ambiente como GOOSE_DRIVER, GOOSE_DBSTRING, GOOSE_MIGRATION_DIR e GOOSE_TABLE, incluindo carregamento a partir de arquivos `.env`.
A CLI oferece comandos para criar migrações (`create`), aplicá-las (`up`, `up-by-one`, `up-to`), revertê-las (`down`, `down-to`, `reset`, `redo`), inspecionar o estado (`status`, `version`) e validar arquivos (`validate`, `fix`). Uma flag `-allow-missing` permite migrações fora de ordem, e uma abordagem de versionamento híbrida combinando timestamps com numeração sequencial é recomendada para fluxos de trabalho em equipe.
Migrações SQL usam anotações como `-- +goose Up` e `-- +goose Down`, com marcadores opcionais `NO TRANSACTION` e `StatementBegin`/`StatementEnd` para instruções complexas. A substituição de variáveis de ambiente pode ser habilitada por arquivo com `ENVSUB ON`/`ENVSUB OFF`. Migrações Go são registradas por meio de `goose.AddMigration` e podem ser incorporadas ao binário usando o pacote embed do Go. Também há suporte para semear dados e migrações incorporadas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.