Nesse desafio você irá implementar uma nova funcionalidade na FinAPI, a aplicação que foi testada durante o desafio Testes unitários.
A nova funcionalidade deverá permitir a transferência de valores entre contas. Para isso, você pode pensar na melhor forma de construir essa solução mas alguns requisitos deverão ser cumpridos:
Não deve ser possível transferir valores superiores ao disponível no saldo de uma conta;
O balance (obtido através da rota /api/v1/statements/balance
) deverá considerar também todos os valores transferidos ou recebidos através de transferências ao exibir o saldo de um usuário;
As informações para realizar uma transferência serão:
{
"amount": 100,
"description": "Descrição da transferência"
}
Você pode passar o id
do usuário destinatário via parâmetro na rota (exemplo: /api/v1/statements/transfers/:user_id
) e o id do usuário remetente poderá ser obtido através do token JWT enviado no header da requisição;
Ao mostrar o balance de um usuário, operações do tipo transfer
deverão possuir os seguintes campos:
{
"id": "4d04b6ec-2280-4dc2-9432-8a00f64e7930",
"sender_id": "cfd06865-11b9-412a-aa78-f47cc3e52905"
"amount": 100,
"description": "Transferência de valor",
"type": "transfer",
"created_at": "2021-03-26T21:33:11.370Z",
"updated_at": "2021-03-26T21:33:11.370Z"
}
Observe o campo sender_id
. Esse deverá ser o id
do usuário que enviou a transferência.
O campo type
também deverá exibir o tipo da operação, que nesse caso é transfer
.
<aside> 💡 Esse desafio não possui testes. Você poderá realizar as alterações no mesmo repositório usado para o desafio de testes unitários e submeter novamente na plataforma.
</aside>
Esse desafio deve ser entregue a partir da plataforma da Rocketseat. Envie o link do repositório que você fez suas alterações. Após concluir o desafio, além de ter mandado o código para o GitHub, fazer um post no Linkedin é uma boa forma de demonstrar seus conhecimentos e esforços para evoluir na sua carreira para oportunidades futuras.
Feito com 💜 por Rocketseat 👋 Participe da nossa comunidade aberta!