Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DESAFIO BACK-END] Guilherme Teixeira Ais #22

Open
wants to merge 105 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
fc4f89e
chore: setup inicial do projeto
Oct 14, 2022
60b8bfa
chore: cria arquivo de configuração do vitest
Oct 14, 2022
84c89e4
chore: adiciona versão do node dentro do engine
Oct 15, 2022
0a0d5e0
feat: cria model User
Oct 15, 2022
c328115
feat: cria casos de usos do User
Oct 15, 2022
68cc543
feat: cria protocolos para a camada de presentation
Oct 15, 2022
a1c1cb2
chore: configura Vitest para entender os paths do TypesCript
Oct 15, 2022
f803963
refactor: arruma tipagens da model do User
Oct 15, 2022
691ea62
feat: cria AddUserController
Oct 15, 2022
4263127
test: cria AddUserController
Oct 15, 2022
9e6b1e3
feat: garante que AddUserController vai retornar serverError se loadU…
Oct 15, 2022
3f37a28
test: garante que AddUserController vai retornar serverError se loadU…
Oct 15, 2022
587db4c
refactor: padroniza nome de arquivo
Oct 15, 2022
ceef26c
feat: garante que addUserUseCase será chamado corretamente
Oct 15, 2022
8ebab1c
test: garante que addUserUseCase será chamado corretamente
Oct 15, 2022
198a22e
feat: garante que AddUserController irá retornar um usuário no caso d…
Oct 15, 2022
7772c38
test: garante que AddUserController irá retornar um usuário no caso d…
Oct 15, 2022
9ba01d2
test: garante que será retornardo serverError se addUserUseCase quebrar
Oct 15, 2022
bc86b53
chore: configura sequelize
Oct 15, 2022
eb1a2e2
feat: cria model Users para Sequelize
Oct 15, 2022
76eb369
feat: implementa UsersMySqlReposiory
Oct 15, 2022
dca9cc4
test: implementa UsersMySqlReposiory
Oct 15, 2022
a91ad66
refactor: cria AddUserMongoRepository
Oct 15, 2022
97e70b9
feat: cria DbAddUser
Oct 15, 2022
b02ac78
test: cria DbAddUser
Oct 15, 2022
9b86ba6
feat: implementa LoadUsers
Oct 15, 2022
fd98844
test: implementa LoadUsers
Oct 15, 2022
e9b18c7
feat: implementa LoadUserRepository
Oct 15, 2022
68ebb0e
test: implementa LoadUserRepository
Oct 15, 2022
1b8f2e6
feat: implementa LoadUsersByEmail
Oct 15, 2022
d4db504
test: implementa LoadUsersByEmail
Oct 15, 2022
de785a5
feat: cria factories para compor AddUserController
Oct 15, 2022
a782782
chore: configura aplicação para rodar migrations corretamente e inici…
Oct 15, 2022
fcc8a7f
feat: ajustes para iniciar a aplicação e testar as rotas de users
Oct 15, 2022
82d467f
chore: adiciona varíaveis de ambientes que estavam faltando
Oct 17, 2022
8b2f8e8
chore: separa testes de integração e unitários
Oct 17, 2022
8db8a65
test: garante que POST /users está funcionando
Oct 17, 2022
511355e
chore: adiciona dependencia de tipagem do supertest
Oct 17, 2022
109c0f6
feat: garante que LoadUsersController irá chamar LoadUsersUseCase cor…
Oct 17, 2022
1dcc3f3
test: garante que LoadUsersController irá chamar LoadUsersUseCase cor…
Oct 17, 2022
74649e3
feat: implementa GET /users
Oct 18, 2022
9a65526
test: implementa GET /users
Oct 18, 2022
9d43fad
refactor: express-route-adaptar agora repassa o objeto de query
Oct 18, 2022
19e1f5c
test: garante que vai ordernar de forma ascendente se requisitado
Oct 18, 2022
5fb8550
feat: garante que LoadUsersByIdController ira chamar LoadUserByIdUseC…
Oct 18, 2022
1b8a4d0
test: garante que LoadUsersByIdController ira chamar LoadUserByIdUseC…
Oct 18, 2022
e05f276
feat: implemente GET /users/{id}
Oct 18, 2022
6fc7a63
test: implemente GET /users/{id}
Oct 18, 2022
79b684b
refactor: refatora testes quebrados
Oct 18, 2022
9547aa3
chore: adiciona relatório de coverage
Oct 18, 2022
35753ec
feat: implementa DbDeleteUser
guilhermeais Oct 18, 2022
90ad5c5
test: implementa DbDeleteUser
guilhermeais Oct 18, 2022
136b84f
feat: garante que DbDeleteUser irá chamar o loadUserById corretamente
guilhermeais Oct 18, 2022
a446588
test: garante que DbDeleteUser irá chamar o loadUserById corretamente
guilhermeais Oct 18, 2022
a14c95f
feat: implementa DeleteuserController
guilhermeais Oct 18, 2022
a91b0dc
test: implementa DeleteuserController
guilhermeais Oct 18, 2022
88767f0
feat: implementa método delte no UsersMySqlRepository
guilhermeais Oct 18, 2022
858d094
test: implementa método delte no UsersMySqlRepository
guilhermeais Oct 18, 2022
344e2d3
feat: implementa rota DELETE /users
guilhermeais Oct 18, 2022
f9520f2
test: implementa rota DELETE /users
guilhermeais Oct 18, 2022
d115480
feat: implementa ValidatorComposite
guilhermeais Oct 18, 2022
b977515
feat: adiciona validação na AddUserController
guilhermeais Oct 18, 2022
d14c585
refactor: arruma nome errado da model
guilhermeais Oct 18, 2022
51b0b9f
refactor: arruma teste quebrado
guilhermeais Oct 18, 2022
f300d2e
fix: arruma tipagem do ClientError
guilhermeais Oct 18, 2022
e2536e9
refactor: garante que role será opcional
guilhermeais Oct 18, 2022
0234302
test: garante que role será opcional
guilhermeais Oct 18, 2022
e34957c
feat: cria dateFormatter
guilhermeais Oct 18, 2022
ecd7818
refactor: padroniza nome do mock
guilhermeais Oct 18, 2022
cb5abab
feat: garante que DbAddUser irá chamar dateFormatter com os parametro…
guilhermeais Oct 18, 2022
7f1898e
test: garante que DbAddUser irá chamar dateFormatter com os parametro…
guilhermeais Oct 18, 2022
9af9b4d
feat: cria tratamentos para a tratar a data
guilhermeais Oct 18, 2022
7d768f8
feat: adiciona detalhes no InvalidParamError
guilhermeais Oct 18, 2022
f371736
feat: cria model Transaction
guilhermeais Oct 18, 2022
892e347
feat: adiciona campo para transações do usuário
guilhermeais Oct 18, 2022
644eb35
feat: implementa db-add-transaction
guilhermeais Oct 19, 2022
63b9c44
test: implementa db-add-transaction
guilhermeais Oct 19, 2022
4761339
refactor: melhor model Transaction
guilhermeais Oct 19, 2022
65ad540
test: melhor model Transaction
guilhermeais Oct 19, 2022
3e0b2a6
feat: garante que chargeback ira funcionar
guilhermeais Oct 19, 2022
264c9f3
test: garante que chargeback ira funcionar
guilhermeais Oct 19, 2022
8aca855
refactor: modifica tipagem para inserir Transaction
guilhermeais Oct 19, 2022
0d493de
feat: implementa AddTransactionController
guilhermeais Oct 19, 2022
c37c815
test: implementa AddTransactionController
guilhermeais Oct 19, 2022
c26cd9e
refactor: valida se os usuários existem antes de gerar a transação
guilhermeais Oct 19, 2022
14ab32b
feat: cria migration para o transaction
guilhermeais Oct 19, 2022
4444334
feat: cria POST /users/:id/transactions
guilhermeais Oct 19, 2022
fbb6359
refactor: melhora tratamento de erro AddTransactionController
guilhermeais Oct 19, 2022
cadb8a1
feat: implementa LoadTransactionByUser
guilhermeais Oct 19, 2022
0b6e9cc
test: implementa LoadTransactionByUser
guilhermeais Oct 19, 2022
bb0174b
feat: implementa loadByUser na TransactionMySqlRepository
guilhermeais Oct 19, 2022
e258577
test: implementa loadByUser na TransactionMySqlRepository
guilhermeais Oct 19, 2022
d1014b3
feat: cria LoadTransactionsByUser
guilhermeais Oct 20, 2022
dc98dc4
test: cria LoadTransactionsByUser
guilhermeais Oct 20, 2022
30defa7
feat: implementa LoadTransaction
guilhermeais Oct 20, 2022
93e99e8
test: implementa LoadTransactionsByUser
guilhermeais Oct 20, 2022
ce2b389
fix: arruma coersão de tipos
guilhermeais Oct 20, 2022
122dc98
refactor: adiciona rotas isoladas para /transactions
guilhermeais Oct 20, 2022
921dc4a
feat: implementa DELETE /transactions
guilhermeais Oct 20, 2022
03ccfdd
test: implementa DELETE /transactions
guilhermeais Oct 20, 2022
b50e47f
feat: inicia cração do endpoint para exportar transações em CSV
guilhermeais Oct 20, 2022
723eff7
test: inicia cração do endpoint para exportar transações em CSV
guilhermeais Oct 20, 2022
cefc8e3
feat: implementa LoadTransactionsCSVController
guilhermeais Oct 20, 2022
574415a
docs: cria documentação utilizando o Insomnia
guilhermeais Oct 20, 2022
4c76080
feat: serve arquivos estáticos
guilhermeais Oct 20, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
NODE_ENV

PORT=

DB_HOST=
DB_PORT=
DB_USER=
DB_PASS=
DB_NAME=
DB_DIALECT
4 changes: 4 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
.env
.database.*
coverage
8 changes: 8 additions & 0 deletions app/.sequelizerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const path = require("path");

module.exports = {
config: path.resolve("src", "infra", "database", "sequelize", "helpers", "_config.js"),
"models-path": path.resolve("src", "infra", "database", "sequelize", "models"),
"seeders-path": path.resolve("src", "infra", "database", "sequelize", "seeders"),
"migrations-path": path.resolve("src", "infra", "database", "sequelize", "migrations"),
};
66 changes: 66 additions & 0 deletions app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Desafio Back-End

# Como executar o projeto
>### Configurações de ambiente
>```bash
># Copie o .env.example para .env
>cp .env.example .env
>```

>Depois, coloque as suas variáveis de ambiente:
>```bash
># Ambiente que o NODE está rodando
>NODE_ENV=
>
># Porta que a aplicação rodará (o padrão é a 3000)
>PORT=
>
># Dados do banco de dados
>DB_HOST=
>DB_PORT=
>DB_USER=
>DB_PASS=
>DB_NAME=
>DB_DIALECT= # O padrão é sqlite:memory
>```

>### Rode as migrations
>```bash
># Cria o banco de dados
>npx sequelize db:create
>
># Cria as tableas
>npx sequelize db:migrate
>```

>### Iniciar o servidor
> ```bash
> # Entre na pasta do projeto
> cd app
>
> # Instale as dependências
> npm install
>
> # Execute a aplicação utilizando
> npm run start
>
> ```

# Testes automatizados
A aplicação está com mais de `90%` de cobertura de testes, para conseguir rodar ps testes, os comandos são:
``` bash
# Testes unitários
npm run test:unit

# Testes de integração
npm run test:integration

# Todos os testes
npm run test

# Gerar cobertura de testes
npm run test:coverage
```

# Documentação da API
A documentação se encontra na url: `http://localhost:3000/`
5 changes: 5 additions & 0 deletions app/nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"execMap": {
"ts": "ts-node -r tsconfig-paths/register"
}
}
Loading