Thales-Eduardo / CRUD-TypeORM

SOLID, TDD, DDD + Cache com redis e paginação.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Produtos.

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

Documentação

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 e redis.

  • = Para armazenar o cache usar o redis e para operações ioredis.

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.


Coverage.

jest

About

SOLID, TDD, DDD + Cache com redis e paginação.

License:MIT License


Languages

Language:TypeScript 89.6%Language:JavaScript 10.2%Language:Dockerfile 0.3%