Esse projeto é uma API basica baseada em uma API já existente chamada julius-api, ela tem como intuito guardar informações de gastos de um usuário no cotidiano.
Esse projeto tem como intuito aprender novas tecnologias e reforçar as já aprendidas sendo elas:
- NodeJS
- TypeScript
- Postgres
- Design Pattern (DDD/Clean Architecture)
- Docker
Foi arquitetado, uma API de CRUD de usuários com laçamentos de gastos (com typeorm). Para o Usuário foi desenvolvido alguns endpoints (seguindo o princípios do REST) que estarão conectados ao seu banco de dados local ou no docker.
1 - Requisição ao endpoint POST /usuario
- O campo
nome
deverá existir, não estar em branco e ser uma string com no mínimo de 8 caracteres; - O campo
email
deverá existir, não estar em branco e ser um tipo email; - Quando o campo
email
já existir o endpoint retornará o seguinte erro:
{
"message": "Email already exists"
}
- Caso contrário, retornará um json com o usuário criado
{
"nome": "MiguelCampos",
"email": "MiguelCampos@email.com",
"id": 1
}
2 - Requisição ao endpoint GET /usuario
- Quando algum usuário existir o endpoint retornará o seguinte:
[
{
"nome": "MiguelCampos",
"email": "MiguelCampos@email.com",
"id": 1
},
{
"nome": "GabrielRodrigues",
"email": "GabrielRodrigues@email.com",
"id": 2
},
{
"nome": "RafaelSantos",
"email": "RafaelSantos@email.com",
"id": 3
},
{
"nome": "PedroSouza",
"email": "PedroSouza@email.com",
"id": 4
}
]
3 - Requisição ao endpoint POST /lancamento
- O campo
idUsuario
deverá existir, não estar em branco e ser um tipo number; - O campo
valor
deverá existir, não estar em branco e ser um tipo number; - O campo
descricao
deverá existir, não estar em branco e ser um tipo string; - O campo
data
deverá existir, não estar em branco e ser um tipo string; - Quando o campo
idUsuario
não existir o endpoint retornará o seguinte erro:
{
"message": "User not found"
}
4 - Requisição ao endpoint GET /usuario/lancamentos/:ID
- Quando o parametro
ID
não existir o endpoint retornará o seguinte:
{
"message": "User not found"
}
- Caso contrário, retornará um json com o usuário com seus laçamentos
{
"nome": "MiguelCampos",
"email": "MiguelCampos@email.com",
"id": 1,
"lancamento": [
{
"valor": 300.32,
"descricao": "VENDER moto antiga",
"data": "2020-08-25T03:00:00.000Z",
"id": 1
},
{
"valor": -150.9,
"descricao": "COMPRAR passage de avião",
"data": "2020-08-25T03:00:00.000Z",
"id": 2
},
{
"valor": -100.2,
"descricao": "COMPRAR coisas no mercado",
"data": "2020-08-25T03:00:00.000Z",
"id": 3
}
]
}
5 - Requisição ao endpoint PUT /usuario/:ID
- O campo
nome
deverá existir, não estar em branco e ser um tipo string; - Quando o parametro
ID
não existir o endpoint retornará o seguinte:
{
"message": "User not found"
}
- Caso contrário, retornará um json com o usuário com email do usuario deletado:
{
"nome": "NOME MODIFICADO",
"email": "GabrielRodrigues@email.com",
"id": 11
}
6 - Requisição ao endpoint DELETE /usuario/:ID
- Quando o parametro
ID
não existir o endpoint retornará o seguinte:
{
"message": "User not found"
}
- Caso contrário, retornará um json com o usuário com email do usuario deletado:
{
"message": "User with email: [MiguelCampos@email.com] deleted"
}
Agradeço imensamente pela CreativeCode pela iniciativa de começar esse projeto e pela toda equipe da Trybe que vem me formando como um profissonal altamente competente.