Sobre • Funcionalidades • Regras de negócio • Extras • Autor • Licença
🚀 Nesse desafio foi necessário desenvolver uma API para realizar o CRUD de tasks (tarefas) - Link .
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
Antes das rotas, vamos entender qual a estrutura (propriedades) que uma task deve ter:
id
- Identificador único de cada tasktitle
- Título da taskdescription
- Descrição detalhada da taskcompleted_at
- Data de quando a task foi concluída. O valor inicial deve sernull
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 campostitle
edescription
por meio dobody
da requisição. Ao criar uma task, os campos:id
,created_at
,updated_at
ecompleted_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 pelotitle
edescription
PUT - /tasks/:id
Deve ser possível atualizar uma task peloid
. Nobody
da requisição, deve receber somente otitle
e/oudescription
para serem atualizados. Se for enviado somente otitle
, significa que odescription
não pode ser atualizado e vice-versa. Antes de realizar a atualização, deve ser feito uma validação se oid
pertence a uma task salva no banco de dados.DELETE - /tasks/:id
Deve ser possível remover uma task peloid
. Antes de realizar a remoção, deve ser feito uma validação se oid
pertence a uma task salva no banco de dados.PATCH - /tasks/:id/complete
Clone este repositório:
git clone git@github.com: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
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:
Algumas sugestões do que pode ser implementado:
- Validar se as propriedades
title
edescription
das rotasPOST
ePUT
estão presentes nobody
da requisição. - Nas rotas que recebem o
/:id
, além de validar se oid
existe no banco de dados, retornar a requisição com uma mensagem informando que o registro não existe.
William Ribeiro 🚀 Portifólio
Este projeto esta sobe a licença MIT.