Git Product home page Git Product logo

desafio-01-node-ignite-2023's Introduction

Sobre o desafio

Nesse desafio você desenvolverá uma API para realizar o CRUD de suas tasks (tarefas).

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

Rotas e regras de negócio

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

    Deve ser possível marcar a task como completa ou não. Isso significa que se a task estiver concluída, deve voltar ao seu estado “normal”.

    Antes da alteração, deve ser feito uma validação se o id pertence a uma task salva no banco de dados.

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.

desafio-01-node-ignite-2023's People

Contributors

luizprsjr 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.