Projeto feito para treinar criação de API's, utilizando arquitetura MSC, utilizando o driver MySQL2. Seguindo os princípios de uma API RESTful.
A API é um CRUD(Create, Read, Update, Delete) de vendas.
Os testes unitários feitos utilizando as bibliotecas Mocha, Chai e Sinon tem 60% de cobertura nas camadas MSC (Models, Services e Controllers).
Node.js, MySQL, Arquitetura MSC, JOI e, testes com Mocha, Chai, Sinon.
Para rodar esse projeto, atente-se as variáveis de ambiente no seu .env
Um exemplo já está disponível no arquivo .env.example, bastando renomear para .env e escolher o valor das variáveis.
-
Para clonar o projeto:
git clone git@github.com:joao-pasip/Project-StoreManager.git. -
Já existe um arquivo
docker-compose.yml(Disponibilizado pela Trybe). Bastando usar o comandodocker-compose uppara rodar o MySQL e o Node pelo docker. -
Os arquivos para criação das tabelas e de seed se encontram nos arquivos
migration.sqleseed.sqlrespectivamente. E podem ser utilizados em alguma ferramenta de gerenciamento de bancos de dados (como DBeaver, Extensão no VSCode MySQL ou MySQL Workbench). -
npm installpara instalar as dependências. -
npm startpara rodar a aplicação usando o node. -
npm run debugpara rodar a aplicação usando o nodemon. -
npm testpara testar a aplicação. -
Utilizar alguma Plataforma de API para acessar os endpoints e fazer seus devidos experimentos. Exemplos: Postman e Insomnia.
Imagem disponibilizada pela Trybe
- GET
/productspara listar todos os produtos. - GET
/products/:idpara listar um produto pelo id. - POST
/productspara cadastrar um novo produto. (Deve receber no body a propriedadename). - POST
/salespara cadastrar vendas. (Deve receber um array de objetos, contendo as propriedadesproductIdequantity). - GET
/salespara listar todas as vendas. - GET
/sales/:idpara listar vendas por id. - PUT
/products/:idpara atualizar o nome de um produto por id. (Deve receber no body a propriedadename). - DELETE
/products/:idpara deletar um produto, buscando por id. - DELETE
/sales/:idpara deletar uma venda, buscando por id. - PUT
/sales/:idpara atualizar uma venda, buscando por id. (Deve receber no body um array de objetos contendoproductIdequantity). - GET
/products/search?q=query(substituindoquerypelo termo que deve ser pesquisado) para pesquisar produtos pelo nome.
Foi um projeto que deu para consolidar a organização da arquitetura MSC, e também começar a prática de testes unitários para cada camada dessa arquitetura utilizando Mocha, Chai e Sinon. Também deu para aplicar ainda mais as queries de MySQL, antes de começar a utilizar um ORM, como sequelize. Aqui é possível ver um projeto que eu fiz utilizando ORM Sequelize.
