Skip to content

Artur-Bertoni/Module2-and-3-Backend-Challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio South Impulsionar dos Módulos 2 e 3

Desafio da trilha Impulsionar 2.0 - Backend

Objetivo

O objetivo desse desafio era de alterar o Desafio do Módulo 2 para adicionar novas bibliotecas e conectividade com sistema de filas.
O contexto apresentado inicialmente para a criação da aplicação foi o de criar um aplicativo de uma loja simples, com as funções de adicionar, editar, excluir e importar (através de arquivos .csv) produtos.

Orientações da aplicação

Orientações de inicialização

  • O primeiro passo para iniciar a aplicação corretamente é construir um '.jar' para cada uma das aplicações através da função Package do Maven.
    • Para isso, basta abrir a pasta do projeto em um terminal (Windows PowerShell, Cmd) com 'cd C:/"Caminho para a pasta/produto-api"' e executar o comando './mvnw clean package', e repetir o processo para a pasta '/producer';
  • Com os '.jar' gerados, agora basta executar o docker-compose, também através de um terminal, na pasta raiz que unifica os projetos ('desafio-south-impulsionar') e rodar o comando 'docker-compose up -d'.

Orientações para uso

  • Para que o software funcione corretamente, certifique-se de que não há nenhuma aplicação rodando nas portas 8080, 8081, 5433, 5672 e 15672 do computador, pois serão rodadas nessas portas (respectivamente) a aplicação produto-api, a aplicação producer a conexão com o banco de dados PostgreSql, a conexão com o RabbitMQ e por fim o console Web do RabbitMQ;
  • Caso o endpoint "/update" (para a função de importar um arquivo '.csv') não esteja funcionando, tente remover o arquivo e adicioná-lo novamente;
  • Para o funcionamento correto da aplicação producer, certifique-se de que as aplicações das quais ela depende estão funcionando corretamente;
  • Para a realização dos testes integrados da aplicação producer, todos os componentes presentes no docker-compose devem estar rodando;
  • A aplicação produto-api tem autonimia para rodar reparadamente da aplicação producer, basta alterar o endpoint de 'http://localhost8081/products' para 'http://localhost8080/products';
  • Para a execução do a aplicação produto-api localmente (via H2), basta rodar o container do RabbitMQ e executar no profile 'local' na IDE, ele automaticamente utilizará as configurações descritas em application-local.yml.

Dependências utilizadas

Requisitos e Funcionalidades Esperadas

  • Utilizar a biblioteca flyway para executar as alterações de banco de dados.
    • Arquivo sql 1: Criar a tabela de produtos com os atributos presentes no arquivo CSV do módulo 1.
    • Arquivo sql 2: Alterar o atributo 'codigo de barras' para ser transformado em String e adicionar o campo inteiro que represente a quantidade em estoque do produto, o valor padrão inicial é 0.
    • Arquivo sql 3: Inserir na tabela de produtos os dados continos do arquivo CSV do módulo 1.
  • Realizar conexão com o RabbitMQ.
    • Adicionar no docker-compose a imagem do RabbitMQ.
    • Criar endpoint que atualiza a quantidade do produto em estoque, os parâmetros deverão ser o código do produto e a quantidade em estoque.
      • Esta opereação deverá produzir uma mensagem no RabbitMQ contendo os dados do produto que foi atualizado.
      • O nome do evento gerado deverá ser 'PRODUCT_CHANGED'.
    • Criar um consumidor que irá receber os dados do produto e atualizar no DB.
  • Ajustar os demais endpoints para contemplar o retorno do novo campo de quantidade em estoque.
  • Os testes integrados deve estar funcionando no H2.
  • A regra de calculo do imposto dos produtos seguem a mesma do modulo 1:
    • Cálculo do valor final do produto: valor bruto + imposto + margem de lucro de 45%
  • Criar um README.md contendo as orientações para rodar a aplicação e suas dependências pela linha de comando.

Bônus

  • Criar um projeto para ser o producer de mensagens
  • Adicionar endpoint para cadastro, update e delete, esse endpoint deve produzir uma mensagem que será publicada no RabbitMQ
  • Os eventos de alteração e criação deve seguir o padrão: CREATE, UPDATE, DELETE, esses evento deve ser enviado junto a mensagem para o RabbitMQ
  • Adicionar endpoints, que consulte o projeto de api, seja por restTemplate ou openfeing
  • O endpoint deve validar os campos obrigótrios, e tratar a resposta
  • Deve conter os testes unitários
  • Deve ser adicionado ao docker-compose do projeto

Links extras

About

Module 2 and 3 Challenge of the Impulsionar 2.0 track - Backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published