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
iduma 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 sernullcreated_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(x)Deve ser possível criar uma task no banco de dados, enviando os campos
titleedescriptionpor meio dobodyda requisição.Ao criar uma task, os campos:
id,created_at,updated_atecompleted_atdevem ser preenchidos automaticamente, conforme a orientação das propriedades acima. -
GET - /tasks(x)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
titleedescription -
PUT - /tasks/:id(x)Deve ser possível atualizar uma task pelo
id.No
bodyda requisição, deve receber somente otitlee/oudescriptionpara serem atualizados.Se for enviado somente o
title, significa que odescriptionnão pode ser atualizado e vice-versa.Antes de realizar a atualização, deve ser feito uma validação se o
idpertence a uma task salva no banco de dados. -
DELETE - /tasks/:id(x)Deve ser possível remover uma task pelo
id.Antes de realizar a remoção, deve ser feito uma validação se o
idpertence a uma task salva no banco de dados. -
PATCH - /tasks/:id/complete(x)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
idpertence a uma task salva no banco de dados.