Para rodar o projeto tem que ter o Docker instalado na sua maquina.
Para subir os contêineres.
docker-compose up -dyarn typeorm migration:runPara deletar os contêineres.
docker-compose downRequisito 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-transformerpara controlar as respostas. -
= Para controle de requisições usar
rate-limiter-flexibleeredis. -
= Para armazenar o cache usar o
redise 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.
