# Clone este repositório
$ git clone [email protected]:askagi/desafio-backend.git
# Acesse a pasta do projeto no terminal/cmd
$ cd desafio_backend
# Instale as dependências
$ npm install
# Execute a aplicação em modo de desenvolvimento
$ npm run dev
# O servidor inciará na porta:3333 - acesse http://localhost:3000
-
-
Arquivo localizado em src/database/schema.sql
-
-
-
Arquivo localizado em src/database/dump.sql
-
Para testes deve ser instalado o Insomnia, em seguida baixe a coleção
As seguintes ferramentas foram usadas na construção do projeto:
Server (NodeJS)
Veja o arquivo package.json
- Editor: Visual Studio Code
- Markdown: Hackmd
- Teste de API: Insomnia
- Modelagem para banco de dados : Sqldbm
-
Requisição
-
Body
// Interface { "name": string, "email": string, "birthday": date }
-
-
Exemplo de Retorno
// POST /user { "name": "Folano de Tal", "email": "[email protected]", "birthday": "1995-08-10" }
-
Resposta
- listagem de todos so usuários existentes, ordernados por ordem de cadastro decrescente (mais novo para mais antigo)
-
// HTTP Status 200 [ { "id": 3, "name": "Regiane Teixeira", "email": "[email protected]", "birthday": "1995-09-06T03:00:00.000Z", "created_at": "2022-09-20T17:43:32.000Z", "updated_at": "2022-09-21T07:41:43.000Z", "opening_balance": 0 }, { "id": 2, "name": "Maria Das Graças", "email": "[email protected]", "birthday": "1971-05-30T03:00:00.000Z", "created_at": "2022-09-20T06:51:26.000Z", "updated_at": null, "opening_balance": 0 }, { "id": 1, "name": "José Costa", "email": "[email protected]", "birthday": "1991-08-10T03:00:00.000Z", "created_at": "2022-09-19T22:57:36.000Z", "updated_at": null, "opening_balance": 300000 } ] // nenhum usuário encontrado []
-
Requisição
-
URL Params - ID do usuário (passado como parâmetro na rota)
GET/user/1
-
-
Exemplo de Retorno
// GET /user/1 { "id": 1, "name": "José Costa", "email": "[email protected]", "birthday": "1991-08-10T03:00:00.000Z", "created_at": "2022-09-19T22:57:36.000Z", "updated_at": null, "opening_balance": 900000 }
-
Requisição
-
Body
// Interface { opening_balance: number }
-
URL Params - ID do usuário (passado como parâmetro na rota)
GET/user/1
-
-
Exemplo de Retorno
// PATCH /user/1 { "opening_balance": 300000 }
- Requisição
-
URL Params - ID do usuário (passado como parâmetro na rota)
DELETE/user/1
-
-
Requisição
-
Body
// Interface { type: "debit" | "credit" | "reversal", amount: number, description?: string }
-
URL Params - ID do usuário (passado como parâmetro na rota)
POST/transaction/1
-
-
Exemplo de Retorno
// POST /transaction/1 { "type": "debit", "amount": 1050, "description": "Descrição..." }
-
Requisição
-
URL Params - ID do usuário (passado como parâmetro na rota)
GET/transactions/user/1
-
URL Query Params - Paginção: por padão a primeira pagina é 0, cada página retorna no maximo 5 transações (opicional)
GET/transaction/user/1?page=1
-
-
Exemplo de Retorno
// GET /transaction/user/1 { "id": 1, "name": "José Costa", "email": "[email protected]", "birthday": "1991-08-10T03:00:00.000Z", "created_at": "2022-09-19T22:57:36.000Z", "updated_at": null, "opening_balance": 300000, "page": 0, "transactions": [ { "id": 25, "user_id": 1, "type": "reversal", "amount": 12000, "description": "Compra duplicada de vestido", "moment": "2022-09-20T16:56:47.000Z" }, { "id": 24, "user_id": 1, "type": "reversal", "amount": 12000, "description": "Compra duplicada de vestido", "moment": "2022-09-20T16:56:47.000Z" }, { "id": 19, "user_id": 1, "type": "reversal", "amount": 12000, "description": "Compra duplicada de vestido", "moment": "2022-09-20T16:56:46.000Z" } ] }
-
Requisição
-
URL Params - ID do usuário (passado como parâmetro na rota)
GET/transactions/user/1/summary
-
-
Exemplo de Retorno
/// GET/transactions/user/1/summary { "opening_balance": 300000, "debit": 4300, "credit": 1800, "reversal": 228000 }
-
Requisição
-
URL Params - ID do usuário (passado como parâmetro na rota)
GET/transactions/user/1/csv
-
URL Query Params
-
filtros para as transações:
{ last_days: number //Retorna transaçoẽs referente a quantidade de dias informado month_year: date //Retorna transações no mês e ano informado. Ex: 02/22 }
-
Exemplos de requisição
GET/transaction/user/1/csv
GET/transaction/user/1/csv?laste_day=30
GET/transaction/user/1/csv?month_year=02/22
-
-
-
Exemplo de Retorno
- Retorna uma arquivo no formato CSV com as transações do usuário
- Requisição
-
URL Params - ID da transação (passado como parâmetro na rota)
DELETE/transactions/1
-
🎧 José Costa