Giter VIP home page Giter VIP logo

ignite-nodejs-module-1's Introduction

GitHub language count Repository size GitHub last commit License Commitizen Rocketseat CodeFactor Stargazers

🚧 Formação NodeJS - Modulo 1 🚧

SobreFuncionalidadesRegras de negócioExtrasAutorLicença

💻 Sobre o desafio

🚀 Nesse desafio foi necessário desenvolver uma API para realizar o CRUD de tasks (tarefas) - Link .


⚙️ Funcionalidades

A API deve conter as seguintes funcionalidades:

  • Criação de uma task
  • Listagem de todas as tasks
  • Atualização de uma task pelo id
  • Remover uma task pelo id
  • Marcar pelo id uma task como completa
  • E o verdadeiro desafio: Importação de tasks em massa por um arquivo CSV

🚧 Regras de negocio

Antes das rotas, vamos entender qual a estrutura (propriedades) que uma task deve ter:

  • id - Identificador único de cada task
  • title - Título da task
  • description - Descrição detalhada da task
  • completed_at - Data de quando a task foi concluída. O valor inicial deve ser null
  • created_at - Data de quando a task foi criada.
  • updated_at - Deve ser sempre alterado para a data de quando a task foi atualizada.

Rotas:

  • POST - /tasks Deve ser possível criar uma task no banco de dados, enviando os campos title e description por meio do body da requisição. Ao criar uma task, os campos: id, created_at, updated_at e completed_at devem ser preenchidos automaticamente, conforme a orientação das propriedades acima.
  • GET - /tasks Deve ser possível listar todas as tasks salvas no banco de dados. Também deve ser possível realizar uma busca, filtrando as tasks pelo title e description
  • PUT - /tasks/:id Deve ser possível atualizar uma task pelo id. No body da requisição, deve receber somente o title e/ou description para serem atualizados. Se for enviado somente o title, significa que o description não pode ser atualizado e vice-versa. Antes de realizar a atualização, deve ser feito uma validação se o id pertence a uma task salva no banco de dados.
  • DELETE - /tasks/:id Deve ser possível remover uma task pelo id. Antes de realizar a remoção, deve ser feito uma validação se o id pertence a uma task salva no banco de dados.
  • PATCH - /tasks/:id/complete

🚀 Como executar o projeto

Clone este repositório:

git clone [email protected]:william-ribeiro/ignite-nodejs-module-1.git

Acesse a pasta do projeto no terminal/cmd:

cd ignite-nodejs-module-1

Instale as dependencias do projeto com npm

npm install

Se preferir usar yarn ou pnpm

yarn install | pnpm install

Acesse o endpoint para testar a API

http://localhost:4000/

Run in Insomnia


🛠 Extras

E a importação do CSV?

Normalmente em uma API, a importação de um CSV acontece enviando o arquivo pela rota, por meio de outro formato, chamado multipart/form-data.

Como ainda não vimos isso em aula, a importação será feita de outra forma. Acesse a página abaixo para a explicação:

Criação via CSV com Stream

Indo além

Algumas sugestões do que pode ser implementado:

  • Validar se as propriedades title e description das rotas POST e PUT estão presentes no body da requisição.
  • Nas rotas que recebem o /:id, além de validar se o id existe no banco de dados, retornar a requisição com uma mensagem informando que o registro não existe.

🦸 Autor


William Ribeiro
🚀 Portifólio

Linkedin Badge WhatsApp Badge


📝 Licença

Este projeto esta sobe a licença MIT.


ignite-nodejs-module-1's People

Contributors

william-ribeiro avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.