Microserviço referente ao backend da Administração do Catálogo de Vídeos
Utilizando Kotlin, Clean Architecture, DDD, TDD e as boas práticas atuais de mercado
- Nome
- Descrição
- Ativar ou desativar
- Auditoria (data de criação, atualização e deleção)
- Nome não deve ser nulo ou em branco
- Nome deve conter no mínimo 3 caracteres
- Nome deve conter no máximo 255 caracteres
- Descrição pode ser nula ou em branco
- Nome
- Relação N para N com Categorias
- Ativar ou desativar
- Auditoria (data de criação, atualização e deleção)
- Nome não deve ser nulo ou em branco
- Nome deve conter no máximo 255 caracteres
- Nome
- Tipo
- Auditoria (data de criação e atualização)
- Nome não deve ser nulo ou em branco
- Nome deve conter no mínimo 3 caracteres
- Nome deve conter no máximo 255 caracteres
- Título
- Descrição
- Ano de lançamento
- Já estreou?
- Duração
- Publicado
- Auditoria (data de criação e atualização)
- Rating (classificação de idade)
- Thumb (imagem)
- Meia thumb (imagem)
- Banner (imagem)
- Trailer (midia)
- Midia (url original, url encodada, controle de status)
- Relacionamento com Categorias (várias)
- Relacionamento com Gêneros (vários)
- Relacionamento com Membros de Elenco (vários)
- Título não deve ser nulo ou em branco
- Título deve conter no máximo 255 caracteres
- Descrição não pode ser vazia
- Ano de lançamento é obrigatório
- Rating é obrigatório
- JDK 17
- IDE de sua preferência
- Docker
- Clonar o repositório:
git clone https://github.com/Lukinhasssss/admin-catalogo-de-videos-kotlin.git
- Subir o banco de dados PostgreSQL com Docker:
docker-compose up -d
- Executar as migrações do PostgreSQL com o Flyway:
./gradlew flywayMigrate
- Executar a aplicação como SpringBoot app:
./gradlew bootRun
Também é possível executar como uma aplicação Java através do método main() na classe Main.java
O banco de dados principal é um PostgreSQL e para subir localmente vamos utilizar o Docker. Execute o comando a seguir para subir o PostgreSQL:
docker-compose up -d
Pronto! Aguarde que em instantes o PostgreSQL irá estar pronto para ser consumido na porta 5432.
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:
./gradlew flywayMigrate
Pronto! Agora sim o banco de dados PostgreSQL está pronto para ser utilizado.
É possível limpar (deletar todas as tabelas) seu banco de dados, basta executar o seguinte comando:
./gradlew flywayClean
MAS lembre-se: "Grandes poderes, vem grandes responsabilidades".
Existe duas maneiras de gerar uma inconsistência no Flyway deixando ele no estado de reparação:
- Algum arquivo SQL de migração com erro;
- 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:
./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.
Além dos comandos já exibidos, temos alguns outros muito úteis como o info e o validate:
./gradlew flywayInfo
./gradlew flywayValidate
Para saber todos os comandos disponíveis: Flyway Gradle Plugin
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:
FLYWAY_DB=jdbc:postgresql://prod:5432/adm_videos FLYWAY_USER=root FLYWAY_PASS=123h1hu ./gradlew flywayValidate