/favoriteProducts

favoriteProducts

Primary LanguageJavaScriptMIT LicenseMIT

Produtos favoritos

API para controle de lista de produtos favoritos de clientes.

Instalação

Você deverá ter em sua máquina os seguinte itens:

  1. Faça um Fork ou clone este repositório.

  2. Instale as dependências do projeto:

    npm install

    ou se você usa yarn:

    yarn
  3. Tenha o Postgres rodando em sua máquina com um database com nome favoriteproducts — ou execute o Docker Compose (neste caso o database será criado automaticamente):

    docker-compose up

    Será executado o Postgres em sua máquina virtual docker na porta 5432, isso pode ser alterado no arquivo docker-compose.yml.

  4. Crie um arquivo .env no diretório raiz, utilize o arquivo .env-example como padrão.

  5. Execute npx sequelize db:migrate (ou se você usa yarn yarn sequelize db:migrate) para gerar as tabelas no database.

Execução

Para início da aplicação, execute:

Desenvolvimento (com nodemon):

npm run dev

ou se você usa yarn:

yarn dev

Produção:

npm run start

ou se você usa yarn:

yarn start

Isso iniciará o servidor com base nos dados informados no arquivo .env, caso tenha seguido o exemplo iniciará em localhost:3333

Testes

Os testes estão localizados na pasta __tests__.

Use o comando abaixo para executar os testes:

npm test

ou se você usa yarn:

yarn test

OBS:. A execução dos testes executa o script sequelize db:migrate, criando as tabelas no database

OBS2:. A execução dos testes efetua a limpeza das tabelas ao final dos testes

Endpoints

Autenticação

POST: /authenticate

Autentica o usuário e fornece um token jwt (este token será obrigatório em todos os próximos endpoints):

{
  "username": "LuizaLabsUser",
  "password": "LuizaLabsPassword"
}

O token deve ser enviado no header Authorization dos endpoints abaixo acompanhado da palavra Baerer, exemplo: Bearer <token>

Clientes

GET: /customers?page=<NUMERO_DA_PAGINA>&perPage=<QUANTIDADE_POR_PAGINA>

OBS:. O parâmetro page e o parâmetro perPage são opcionais. Caso os mesmos não sejam fornecidos, serão utilizados os valores 1 e 10 respectivamente`

Ação: Retorna uma lista de Clientes

POST: /customers

{
  "name": "Jessiley Oliveira",
  "email": "jessiley@example.com.br"
}

Ação: Cadastra um novo cliente

GET: /customers/<ID_CLIENTE>

Ação: Retorna um cliente com base no ID

PUT: /customers/<ID_CLIENTE>

{
  "name": "Jessiley Willian",
  "email": "jessiley@otherExample.com"
}

Ação: Atualiza os dados de um cliente

DELETE: /customers/<ID_CLIENTE>

Ação: Remove um cliente

Produtos favoritos

OBS:. Os produtos não são gerenciados por este sistema, para ver a documentação da API de produtos acesse

POST: /customers/<ID_CLIENTE>/favoriteproduct/<ID_PRODUTO>

Ação: Adiciona um produto a lista de favoritos do cliente

GET: /customers/<ID_CLIENTE>/favoriteproduct?page=<NUMERO_DA_PAGINA>&perPage=<QUANTIDADE_POR_PAGINA>

OBS:. O parâmetro page e o parâmetro perPage são opcionais. Caso os mesmos não sejam fornecidos, serão utilizados os valores 1 e 10 respectivamente`

Ação: Obtém a lista de produtos favoritos de um cliente

DELETE: /customers/<ID_CLIENTE>/favoriteproduct/<ID_PRODUTO>

Ação: Remove um produto da lista de favoritos de um cliente