Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env
API_PORT
DATABASE_URL
- Crie um enpoint que recebe o dois ids de usuários, e um valor monetário representando a transferência entre eles.
- Crie um endpoint que recebe um id de usuário e retorna o saldo dele.
- Valide se o usuário de origem tem saldo suficiente antes da transferência.
- É preciso pensar na possibilidade de concorrência de transferências onde duas pessoas tranferem dinheiro ao mesmo tempo para uma terceira.
- Se uma transferência falhar, o saldo do usuário de origem deve ser restaurado.
- Não é necessário endpoints para criar usuários, popule o banco de forma com que os dois usuários existam e que transferências possam ser feitas entre eles.
POST /transfer/
Parâmetro | Tipo | Descrição |
---|---|---|
amount |
int64 |
Obrigatório. Valor da transferência |
debtor_id |
string |
Obrigatório. ID do Debitante |
beneficiary_id |
string |
Obrigatório. ID do Beneficiário |
GET /users/{id}
- Exemplo de Payload:
{
"amount": 100,
"debtor_id": "089557bc-ddf2-4ec5-8077-d8bf09fe3ddc",
"beneficiary_id": "f2f0e0d1-e37e-45c3-ad06-e6c2a66544fc"
}
- Exemplo de Requisição:
curl -X POST \
http://localhost:8080/opportunity \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{
"amount": 10,
"debtor_id": "089557bc-ddf2-4ec5-8077-d8bf09fe3ddc",
"beneficiary_id": "f2f0e0d1-e37e-45c3-ad06-e6c2a66544fc"
}'