Este microsserviço, desenvolvido em NodeJS e NestJS como framework, tem como objetivo simular as transações bancárias de uma conta. Possui as operações básicas de depósito, saque e transferência entre contas (de forma instantânea). A seguir, darei o passo a passo de como clonar o repositório, intalar as dependências e rodar o projeto localmente.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disto, é imprescindível ter um editor para trabalhar com o código como VSCode. Optei pelo uso do PostgreSQL como banco relacional, então caso não tenha o mesmo instalado, será necessário que utilize o Docker ok?
As seguintes ferramentas foram usadas na construção do projeto:
- Node.js ({ node: 17.4.0, npm: 8.8.0 })
- TypeScript ({ tsc: 5.2.2 })
# Clone este repositório
$ git clone git@github.com:gabrielhsantos/Bank_Account_Simulation.git
# Acesse a pasta do projeto no terminal/cmd
$ cd Bank_Account_Simulation
# Instale as dependências
$ npm ci
Caso utilize o PostgreSQL, basta executar os seguintes comandos:
# Execute as migrations
$ npm run migration:run
Isso fará com que as tabelas accounts e transactions sejam criadas no banco de dados.
# Popule a tabela accounts
$ npm run seed:run
Com isso, serão criados dois registros de exemplo na tabela accounts.
Se a opção for o uso do Docker, existe na raiz do projeto um arquivo docker-compose, que irá instalar o PostgreSQL em um conteiner. Para isso, basta rodar esse comando:
# Subir o container Docker
$ npm run infra:up
Obs: ao subir a infra, o processo de migration e seed ocorrerá automaticamente.
Para derrubar o container e os volumes gerados, basta rodar:
# Remover o container Docker e volumes
$ npm run infra:down
$ npm start
O servidor inciará na porta:3000 (ou a porta que foi definida no arquivo .env.development).
Para rodar os testes, basta utilizar este comando via terminal/cmd:
# Irá rodar os testes de integração e unitários
$ npm t
# Irá rodar apenas os testes de integração
$ npm run test:integration
# Irá rodar apenas os testes unitários
$ npm run test:unit
Caso queira um registro com o coverage:
# Irá rodar os testes e gerar a % de cobertura
$ npm run test:cov
Um arquivo com extensão .json se encontra na pasta:
src/shared/docs
O mesmo pode ser importado dentro do Postman, para facilitar o acesso aos endpoints.
A documentação com o swagger, pode ser acessada pela url /doc com o servidor rodando.