Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devkayos/desafio-rocketseat-node

Esse e um desafio da rocketseat da formacao de node.js, no qual sera necessario fazer uma API usando node puro. Alem disso, essa e uma API que vai ser possivel fazer o controle de tasks
https://github.com/devkayos/desafio-rocketseat-node

Last synced: about 4 hours ago
JSON representation

Esse e um desafio da rocketseat da formacao de node.js, no qual sera necessario fazer uma API usando node puro. Alem disso, essa e uma API que vai ser possivel fazer o controle de tasks

Awesome Lists containing this project

README

        

## 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` (x)

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` (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 `title` e `description`

- `PUT - /tasks/:id` (x)

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` (x)

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` (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 `id` pertence a uma task salva no banco de dados.