/desafio-picpay-iagosilva

Realizei o Desafio PicPay como um exercício de aprendizado, pois sou apaixonado por linguagens de alto nível, como Java, por exemplo. Por isso fui logo fazendo quando vi o repositório.

Primary LanguageJava

Desafio PicPay - Iago Silva

Realizei o Desafio PicPay como um exercício de aprendizado, pois sou apaixonado por linguagens de alto nível, como Java, por exemplo. Por isso fui logo fazendo quando vi o repositório.

🚀 Funcionalidades Implementadas

Criei uma rota para transferências no endpoint http://localhost:8080/transfer, que verifica a disponibilidade do serviço antes de processar a requisição. As rotas utilizadas para simulação são:

📜 Regras de Negócio

  • A operação de transferência deve ser uma transação atômica. Em caso de inconsistência, a transferência será revertida, e o dinheiro retornará para a carteira do usuário que fez o envio.

🏁 Respostas Possíveis

As respostas da API podem ser:

✅ Sucesso

success-response

❌ Falha na Autorização

authorization-fail

⚠️ Servidor Indisponível

server-not-avaliable

🗃️ Estrutura do Banco de Dados

database

📋 Requisitos

Para executar este projeto, você precisará dos seguintes pré-requisitos:

💻 Como Começar

Para iniciar o projeto, siga as etapas abaixo:

  1. Executar Docker Compose: Certifique-se de que todos os serviços necessários estejam em execução. Execute o seguinte comando:
docker compose up
Isso iniciará os contêineres necessários para a aplicação.
  1. Limpar e Instalar Dependências: Execute o comando a seguir para limpar e instalar todas as dependências do projeto:
mvn clean install
  1. Executar a Aplicação: Para iniciar a aplicação Spring Boot, utilize o comando:
./mvnw spring-boot:run
  1. Executar Migrações do Flyway: Para aplicar as migrações do Flyway, utilize o seguinte comando, garantindo que o arquivo de configuração esteja no caminho correto:
mvn -Dflyway.configFiles=src/main/resources/flyway.conf flyway:migrate
  1. Migrar Fresh e Semear: Para realizar uma migração fresh e semear o banco de dados, execute:
./mvnw spring-boot:run -Dspring-boot.run.arguments="migrate-fresh-and-seed"