Neste quarto e último post da série sobre o Flyway, vamos falar sobre alguns recursos menos badalados da ferramenta, a saber:
- Como mudar o nome da tabela de controle do Flyway;
- Como utilizar o recurso de placeholders, algo como variáveis de substituição para os scripts.
Vamos lá!
- Como mudar o nome da tabela de controle do Flyway
Alterar o nome da tabela de controle utilizada pelo Flyway para armazenar as versões das migrações é extremamente simples. Na seção de configuração do plugin no Maven, basta adicionar uma entrada <table>, com o nome da tabela.
Exemplo:
<plugin><groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>7.7.3</version>
<dependencies>
...
</dependencies>
<configuration>
...
<table>nome_diferente_tabela</table>
</configuration>
</plugin>
E por qual motivo eu alteraria o nome padrão da tabela de controle? Um caso que aconteceu conosco foi a situação onde, no mesmo schema de banco de dados, tabelas de diversos projetos residiam. Assim, para cada projeto, utilizamos um nome diferente de tabela, para não gerar conflitos e podermos continuar utilizando a ferramenta.
2. Como utilizar o recurso de placeholders
O recurso de placeholders é simples de se utilizar e bem poderoso: permite que eu utilize uma espécie de variável de substituição nos scripts, e o Flyway se encarrega de substituir o conteúdo de acordo com a configuração do plugin.
Novamente, na seção de configuração do plugin no Maven, adicionar uma seção chamada <placeholders>, contendo as variáveis e seus conteúdos. Assim:
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>7.7.3</version>
<dependencies>
...
</dependencies>
<configuration>
...
<placeholders>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>7.7.3</version>
<dependencies>
...
</dependencies>
<configuration>
...
<placeholders>
<bancoPessoas>pessoas_homolog</bancoPessoas>
<bancoContas>contas_hmg</bancoContas>
</placeholders>
</configuration>
</plugin>
</configuration>
</plugin>
Com os placeholders definidos, basta utilizá-los em seus scripts. A sintaxe é parecida com o Javascript e seu recurso de substituição de variáveis em strings delimitadas por ` `:
FROM ${bancoPessoas}.TABELA1
INNER JOIN ${bancoContas}.TABELA2
WHERE ...
Você pode combinar o recurso do Maven de profiles com o recurso do Flyway de placeholders e ganhar scripts com diferenças parametrizáveis entre seus diferentes ambientes - desenvolvimento, testes, produção, etc.
Chegamos ao fim deste post e da série de posts sobre o Flyway. Espero que tenham gostado desta série. Deixem suas dúvidas nos comentários, adoraria ouvir de vocês.
Um grande abraço e até o próximo post!!
Comentários
Postar um comentário