API para controle de lista de produtos favoritos de clientes.
Você deverá ter em sua máquina os seguinte itens:
- Git
- Node.js 10.0.0 (ou superior)
- Postgres (Caso prefira poderá executá-lo através do Docker (docker-compose.yml))
-
Faça um Fork ou clone este repositório.
-
Instale as dependências do projeto:
npm install
ou se você usa yarn:
yarn
-
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 arquivodocker-compose.yml
. -
Crie um arquivo
.env
no diretório raiz, utilize o arquivo.env-example
como padrão. -
Execute
npx sequelize db:migrate
(ou se você usa yarnyarn sequelize db:migrate
) para gerar as tabelas no database.
Para início da aplicação, execute:
Desenvolvimento
(com nodemon):
npm run dev
ou se você usa yarn:
yarn dev
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
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
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>
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
{
"name": "Jessiley Oliveira",
"email": "jessiley@example.com.br"
}
Ação:
Cadastra um novo cliente
Ação:
Retorna um cliente com base no ID
{
"name": "Jessiley Willian",
"email": "jessiley@otherExample.com"
}
Ação:
Atualiza os dados de um cliente
Ação:
Remove um cliente
OBS:. Os produtos não são gerenciados por este sistema, para ver a documentação da API de produtos acesse
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
Ação:
Remove um produto da lista de favoritos de um cliente