Skip to content

samervalente/register-clients-api

Repository files navigation

📋 Descrição

Uma API REST para cadastro e visualização de clientes.

💻 Tecnologias e Conceitos

  • REST APIs
  • Typescript
  • Node.js
  • NestJS
  • PrismaORM
  • PostgreSQL
  • MVC Architecture
  • In Memory Database
  • Docker
  • Jest e Supertest

🏁 Rodando a aplicação

Primeiro, faça o clone desse repositório na sua maquina:

git clone https://github.com/samervalente/register-clients-api

Em seguida, certifique-se de que sua instância do postgresql esteja ativa

# verifique o status
$ sudo service postgresql status

# caso não esteja ativa, use:
$ sudo service postgresql start

💻 Rodando na máquina local

# instale as dependências
$ npm install

# crie um arquivo .env e insira
DATABASE_URL="postgresql://${USER}:${PASSWORD}@localhost:5432/register-clients-db"
APP_PORT=
# por padrão, caso a variável APP_PORT não esteja definida, a aplicação irá rodar na porta 4000.

# crie o banco de dados e as tabelas através das migrations do prisma
$ npx prisma migrate dev

# inicie a aplicação
$ npm start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

# utilize a url para realizar as chamadas http
http://localhost:${APP_PORT}/clients

🐳 Rodando no Docker

# crie um arquivo .env e troque os valores pelas suas credenciais
DATABASE_URL="postgresql://${USER}:${PASSWORD}@pg-register-clients:5432/register-clients-db"
POSTGRES_DATABASE=register-clients-db
POSTGRES_USER=
POSTGRES_PASSWORD=

# inicie a aplicação
$ docker-compose up --build

🌱 Seed

Caso vocẽ queira popular o banco com vários dados pré-existentes (como por exemplo para testar a paginação), faça o seed para não ter que criar vários clientes manualmente. Observação: caso você tenha optado por rodar aplicação com docker, o comando de seed é executado automaticamente.

$ npx prisma db seed

Tests

Cada suíte de teste utiliza um schema identificado por um identificador único (uuid) do próprio banco de dados antes criado, o que não afeta nosso banco principal e remove a necessidade de criar um outro banco e docker-compose para testes.

Além disso, nossos testes unitários utilizam o conceito de in memory database, onde os dados estão armazenados na memória principal ao invés de estarem em discos rígidos como ocorre na maior parte dos casos. In memory database também remove a necessidade de utilização de mockagem e oferece uma maior flexibilidade.

🧪 Testes na máquina local

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

🧪 Testes com docker

# unit tests
$ docker exec -it register-clients-app npm run test

# e2e tests
$ docker exec -it register-clients-app npm run test:e2e

🚀 Rotas

POST /clients
    - Rota para registrar um novo cliente
    - headers: {}
    - body: {
    "name": "Filipe Valente",
    "cpf": "123.456.789-10",
    "birthDate": "19/10/1999"
    }
GET /clients
    - Rota para listar todos os clientes
    - headers: {}
    - body: {}
GET /clients?page=2&limit=5
    - Rota para listar um grupo específico de clientes através da paginação
    - headers: {}
    - body: {}
GET /clients/:cpf 
    - Rota para listar um cliente específico pelo CPF
    - headers: {}
    - body: {}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •