Continuação do desenvolvendo da aplicação de gestão de transações, inclusão do uso de banco de dados com o TypeORM e envio de arquivos com o Multer!
Essa será uma aplicação que deve armazenar transações financeiras de entrada e saída e permitir o cadastro e a listagem dessas transações, além de permitir a criação de novos registros no banco de dados a partir do envio de um arquivo csv.
yarn install // instala dependências
yarn dev:server // inicia aplicação em modo desenvolvedor
yarn test // executa os testes
- Docker
- Postgres
POST /transactions
: A rota deve recebertitle
,value
,type
, ecategory
dentro do corpo da requisição, sendo otype
o tipo da transação, que deve serincome
para entradas (depósitos) eoutcome
para saídas (retiradas). Ao cadastrar uma nova transação, ela deve ser armazenada dentro do seu banco de dados, possuindo os camposid
,title
,value
,type
,category_id
,created_at
,updated_at
.
{
"id": "uuid",
"title": "Salário",
"value": 3000,
"type": "income",
"category": "Alimentação"
}
GET /transactions
: Essa rota deve retornar uma listagem com todas as transações que cadastradas até agora, junto com o valor da soma de entradas, retiradas e total de crédito. Essa rota deve retornar um objeto o seguinte formato:
{
"transactions": [
{
"id": "uuid",
"title": "Salário",
"value": 4000,
"type": "income",
"category": {
"id": "uuid",
"title": "Salary",
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
{
"id": "uuid",
"title": "Freela",
"value": 2000,
"type": "income",
"category": {
"id": "uuid",
"title": "Others",
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
{
"id": "uuid",
"title": "Pagamento da fatura",
"value": 4000,
"type": "outcome",
"category": {
"id": "uuid",
"title": "Others",
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
{
"id": "uuid",
"title": "Cadeira Gamer",
"value": 1200,
"type": "outcome",
"category": {
"id": "uuid",
"title": "Recreation",
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
},
"created_at": "2020-04-20T00:00:49.620Z",
"updated_at": "2020-04-20T00:00:49.620Z"
}
],
"balance": {
"income": 6000,
"outcome": 5200,
"total": 800
}
}
DELETE /transactions/:id
: A rota deve deletar uma transação com oid
presente nos parâmetros da rota;
POST /transactions/import
: A rota deve permitir a importação de um arquivo com formato.csv
contendo as mesmas informações necessárias para criação de uma transaçãoid
,title
,value
,type
,category_id
,created_at
,updated_at
, onde cada linha do arquivo CSV deve ser um novo registro para o banco de dados, e por fim retorne todas astransactions
que foram importadas para o banco de dados.