Este projeto é uma cópia baseada no projeto do Waldemar Neto. Ele foi realizado seguindo os passos da playlist de aulas gratuítas disponibilizada no youtube.
Vale avisar sobre algumas diferenças entre os projetos.
- Foi adotado um modelo de exportação padrão (
export default
) para as classes da aplicação. - A nomeação de classes foi feita usando uma convenção de nomes para descrever a sua funcionalidade, apesar da estrutura de pastas já deixar explícito.
Classes dentro dos diretórios
clients
,controllers
,models
eservices
foram acompanhadas respectivamente deClient
,Controller
,Repository
eService
. - As classes modelos (models) foram nomeadas com
Repository
por me lembrar implementações feitas Java. - A classe
Request
implementada pelo Waldemar foi renomeada paraHttpClient
por me lembrar de implementações feitas em Angular. - As funções de acessar e fechar o banco de dados foram colocadas em uma classe específica chamada
Database
para manter as convenções. - Algumas declarações de tipos foram feitas de forma diferente como a do express porque resolvi seguir outros modelos encontrados pela internet.
- O estilizador de código do
prittier
foi removido em virtude da utilização do eslint para realizar este trabalho. - Foi adicionar a dependência do
pre-commit
para manter a qualidade de código. Para ignorar execuções das etapas durante o commit é necessário utilizar--no-verify
no comando decommit
(ex:git commit --no-verify -m "msg"
). - Alguns
comandos
foram adicionados, removidos, ou renomeados do projeto original. - O
github workflow
foi configurado de forma distinta para evitar o deploy na master. - O
postman/insominia
foram descartados em virtude do desejo em utilizar oCURL
em testes manuais, e assim ter um contato mais direto com ferramentas de terminal. - Foi utilizado o padrão
Factory
para evitar a passagem de classes concretas por construtor na classe 'ForecastService', como foi feito pelo Waldemar. Comentei no seu vídeo sobre e ele me pediu para realizar uma implementação para poder mostrar as diferenças de implementação. Este padrão é muito utilizado em Java e simplesmente exige uma interface intermediária que cria a classe alvo, neste caso era oRatingService
. A classe concreta para este papel é aRatingServiceFactory
. - O parametro da autenticação foi alterado de
x-access-token
paraauthorization
.
$ yarn # Para instalar as dependências
$ yarn dev # Inicializa o projeto em modo de desenvolvimento
$ yarn start # Inicializa o projeto em modo de produção
$ yarn test # Realiza todos os testes
$ yarn test:unit # Realiza todos os testes de unidade
$ yarn test:functional # Realiza todos os testes funcionais
Caso você tenham algum problema com o script encontrado em scripts/deploy.sh
, vale lembrar que ele deve ter permissão de execução (ex: chmod +x scripts/deploy.sh
).