Este projeto demonstra a criação de uma aplicação para gerenciamento de tarefas utilizando Spring Boot, MongoDB, AWS S3 e programação reativa com Spring WebFlux para o Teste Prático: Desenvolvedor Java da Hive.
- Java (JDK 17): Linguagem de Programação Java para desenvolvimento do backend.
- Spring Boot (3.3.2): Framework Java para desenvolvimento de aplicações web e microserviços.
- MongoDB: Banco de dados NoSQL para armazenamento dos dados das tarefas.
- AWS S3: Serviço de armazenamento da AWS para salvar arquivos JSON das tarefas.
- Docker: Ferramenta para containerização da aplicação.
- Lombok: Biblioteca que ajuda a reduzir o código boilerplate.
- Spring Data MongoDB: Integração do Spring Framework com o MongoDB.
- Spring Data WebFlux: Integração do Spring Framework com a programação reativa.
- @POST /criar-tarefa: Cria uma nova tarefa e salva no bucket S3.
- @GET /listar-tarefas: Lista todas as tarefas.
- @GET /listar-tarefas/status: Lista todas as tarefas com um status específico.
- @PUT /atualizar-tarefa/{id}: Atualiza uma tarefa existente e salva no bucket S3.
- @DELETE /deletar-tarefa/{id}: Deleta uma tarefa pelo ID.
- criarTarefa(Tarefa tarefa): Cria uma nova tarefa, salva no MongoDB e armazena um arquivo JSON no S3.
- atualizarTarefaPorId(String id, Tarefa tarefa): Atualiza uma tarefa existente, salva no MongoDB e armazena um arquivo JSON atualizado no S3.
- buscarTarefas(): Lista todas as tarefas.
- deletarTarefasPorId(String id): Deleta uma tarefa pelo ID.
- buscarTarefasPorStatus(String status): Lista todas as tarefas com um status específico.
- Tarefa: Entidade mapeada para o MongoDB com um ID gerado automaticamente.
Um arquivo de inicialização (mongo-init.js) é utilizado para popular o banco de dados MongoDB com dados iniciais.
A integração com o AWS S3 é realizada para salvar arquivos JSON representando as tarefas.
Arquivo utilizado para criar a imagem Docker da aplicação.
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY target/hive-test-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:GetRecords",
"dynamodb:GetShardIterator",
"dynamodb:DescribeStream",
"dynamodb:ListStreams"
],
"Resource": "arn:aws:dynamodb:us-east-1:205204618495:table/hive-test-table/stream/*"
}
]
}
