Para rodar o projeto tem que ter o Docker instalado na sua maquina.
Para subir os contêineres.
docker-compose up -d
yarn typeorm migration:run
Para deletar os contêineres.
docker-compose down
Requisito Funcionais.
-
= Criar um produto com sua categoria.
-
= Criar uma migration para adicionar uma coluna, avatar.
-
= Adicionar Foto do produto.
-
= Listar todos os produtos a partir do id da categoria.
-
= Listar todas as categorias.
-
= Atualizar o nome da categoria e os produtos.
-
= validar dados na rotas.
-
= Para deletar o produto sera necessário o id do produto.
-
= Para atualizar o produto sera necessário o id do produto.
-
= Para listar os produtos da categoria, sera necessário id da categoria.
-
= Controlar os limites de requisições feitas pelo mesmo ip/usuário.
-
= Adicionar cache nas listagens dos produtos.
-
= Adicionar paginação na listagem das categorias e produtos.
Requisito não Funcionais.
-
= Para Criar, deletar, etc. Usar o
TypeORM
. -
= Banco de dados
PostgreSQL
. -
= Para salvar a foto no disco, usar o
multer
. -
= Para testes usar o
jest
. -
= Build do projeto com o
babel
. -
= Injeção de dependência com
tsyringe
. -
= Para validar os dados usar o
celebrate
. -
= Usar
class-transformer
para controlar as respostas. -
= Para controle de requisições usar
rate-limiter-flexible
eredis
. -
= Para armazenar o cache usar o
redis
e para operaçõesioredis
.
Regra de Negócios.
-
= Somente criar se a categoria não existir no banco.
-
= Ao criar produto deve criar junto a categoria do produto.
-
= Para criar um avatar do produto deve checar se o produto existe.
-
= Para atualizar produto deve checar se o produto existe.
-
= Para deletar produto deve checar se o produto existe.
-
= Para listar os produtos o id da categoria deve ser igual ao category_id da tabela products.
-
= As categorias e produtos listadas devem conter um limite passando pela query para paginação.