https://github.com/codeedu/micro-admin-videos-java
https://github.com/codeedu/micro-admin-videos-java
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/codeedu/micro-admin-videos-java
- Owner: codeedu
- Created: 2022-04-25T16:17:31.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-08-20T17:04:40.000Z (over 3 years ago)
- Last Synced: 2025-04-17T10:24:52.551Z (9 months ago)
- Language: Java
- Size: 389 KB
- Stars: 36
- Watchers: 7
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
🚀 Microserviço: Admin do Catálogo de Vídeos com Java
Microserviço referente ao backend da Administração do Catálogo de Vídeos
Utilizando Clean Architecture, DDD, TDD e as boas práticas atuais de mercado
## Ferramentas necessárias
- JDK 17
- IDE de sua preferência
- Docker
## Como executar?
1. Clonar o repositório:
```sh
git clone https://github.com/codeedu/micro-admin-videos-java.git
```
2. Subir o banco de dados MySQL com Docker:
```shell
docker-compose up -d
```
3. Executar as migrações do MySQL com o Flyway:
```shell
./gradlew flywayMigrate
```
4. Executar a aplicação como SpringBoot app:
```shell
./gradlew bootRun
```
> Também é possível executar como uma aplicação Java através do
> método main() na classe Main.java
## Banco de dados
O banco de dados principal é um MySQL e para subir localmente vamos utilizar o
Docker. Execute o comando a seguir para subir o MySQL:
```shell
docker-compose up -d
```
Pronto! Aguarde que em instantes o MySQL irá estar pronto para ser consumido
na porta 3306.
### Migrações do banco de dados com Flyway
#### Executar as migrações
Caso seja a primeira vez que esteja subindo o banco de dados, é necessário
executar as migrações SQL com a ferramenta `flyway`.
Execute o comando a seguir para executar as migrações:
```shell
./gradlew flywayMigrate
```
Pronto! Agora sim o banco de dados MySQL está pronto para ser utilizado.
#### Limpar as migrações do banco
É possível limpar (deletar todas as tabelas) seu banco de dados, basta
executar o seguinte comando:
```shell
./gradlew flywayClean
```
MAS lembre-se: "Grandes poderes, vem grandes responsabilidades".
#### Reparando as migrações do banco
Existe duas maneiras de gerar uma inconsistência no Flyway deixando ele no estado de reparação:
1. Algum arquivo SQL de migração com erro;
2. Algum arquivo de migração já aplicado foi alterado (modificando o `checksum`).
Quando isso acontecer o flyway ficará em um estado de reparação
com um registro na tabela `flyway_schema_history` com erro (`sucesso = 0`).
Para executar a reparação, corrija os arquivos e execute:
```shell
./gradlew flywayRepair
```
Com o comando acima o Flyway limpará os registros com erro da tabela `flyway_schema_history`,
na sequência execute o comando FlywayMigrate para tentar migrar-los novamente.
#### Outros comandos úteis do Flyway
Além dos comandos já exibidos, temos alguns outros muito úteis como o info e o validate:
```shell
./gradlew flywayInfo
./gradlew flywayValidate
```
Para saber todos os comandos disponíveis: [Flyway Gradle Plugin](https://flywaydb.org/documentation/usage/gradle/info)
#### Para executar os comandos em outro ambiente
Lá no `build.gradle` configuramos o Flyway para lêr primeiro as variáveis de
ambiente `FLYWAY_DB`, `FLYWAY_USER` e `FLYWAY_PASS` e depois usar um valor padrão
caso não as encontre. Com isso, para apontar para outro ambiente basta sobrescrever
essas variáveis na hora de executar os comandos, exemplo:
```shell
FLYWAY_DB=jdbc:mysql://prod:3306/adm_videos FLYWAY_USER=root FLYWAY_PASS=123h1hu ./gradlew flywayValidate
```