Nesse desafio você irá desenvolver uma API em Node.js para realizar o gerenciamento completo de tarefas (CRUD). As funcionalidades essenciais incluem a criação, listagem com filtros por título e descrição, atualização, remoção e a marcação de tarefas como concluídas. O principal diferencial do projeto é a implementação de uma rotina de importação de tarefas em massa a partir de um arquivo CSV, utilizando a biblioteca csv-parse.
Estrutura, regras e requisitos do projeto
O desafio consiste na criação de uma API em Node.js para gerenciar tarefas. O principal objetivo é aplicar os conceitos de CRUD (Create, Read, Update, Delete) e manipulação de arquivos.
Cada tarefa deve ser composta pelas seguintes propriedades:
id: Um identificador único para cada tarefatitle: O título da tarefadescription: Uma descrição detalhada da tarefacompleted_at: A data de conclusão da tarefa, que deve iniciar como nullcreated_at: A data de criação da tarefaupdated_at: A data da última atualização da tarefa, que deve ser alterada a cada modificaçãoA API deve possuir as seguintes rotas e regras de negócio:
title e description no corpo da requisição.id, created_at, updated_at e completed_at devem ser preenchidos automaticamente.title e description.id.title e/ou description no corpo da requisição para atualização.id fornecido corresponde a uma tarefa existente.id.id fornecido corresponde a uma tarefa existente.completed_at.id fornecido corresponde a uma tarefa existente.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 esse desafio visa manter a implementação mais simples, você pode realizar essa funcionalidade por meio de um arquivo de script import-csv.js, por exemplo.
Para realizar isso, utilize a lib csv-parse, utilizando o exemplo de iterador async.
Com a biblioteca instalada utilizando o gerenciador de pacotes de sua preferência, crie um arquivo a parte para realizar a leitura do arquivo CSV.
Nesse arquivo, deve ser feito a leitura do CSV e para cada linha, realize uma requisição para a rota POST - /tasks, passando os campos necessários.
Recomendação do formato do CSV:
title,description Task 01,Descrição da Task 01 Task 02,Descrição da Task 02 Task 03,Descrição da Task 03 Task 04,Descrição da Task 04 Task 05,Descrição da Task 05
Semelhante ao que foi feito no stream-http-server.js, nas aulas, utilizando o for await, também é possível fazer com o parse da lib informada acima. (Lembre-se de pular a primeira linha do CSV)
Algumas sugestões do que pode ser implementado:
title e description das rotas POST e PUT estão presentes no body da requisiçã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.O desafio consiste na criação de uma API em Node.js para gerenciar tarefas. O principal objetivo é aplicar os conceitos de CRUD (Create, Read, Update, Delete) e manipulação de arquivos.
Cada tarefa deve ser composta pelas seguintes propriedades:
id: Um identificador único para cada tarefatitle: O título da tarefadescription: Uma descrição detalhada da tarefacompleted_at: A data de conclusão da tarefa, que deve iniciar como nullcreated_at: A data de criação da tarefaupdated_at: A data da última atualização da tarefa, que deve ser alterada a cada modificaçãoA API deve possuir as seguintes rotas e regras de negócio:
title e description no corpo da requisição.id, created_at, updated_at e completed_at devem ser preenchidos automaticamente.title e description.id.title e/ou description no corpo da requisição para atualização.id fornecido corresponde a uma tarefa existente.id.id fornecido corresponde a uma tarefa existente.completed_at.id fornecido corresponde a uma tarefa existente.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 esse desafio visa manter a implementação mais simples, você pode realizar essa funcionalidade por meio de um arquivo de script import-csv.js, por exemplo.
Para realizar isso, utilize a lib csv-parse, utilizando o exemplo de iterador async.
Com a biblioteca instalada utilizando o gerenciador de pacotes de sua preferência, crie um arquivo a parte para realizar a leitura do arquivo CSV.
Nesse arquivo, deve ser feito a leitura do CSV e para cada linha, realize uma requisição para a rota POST - /tasks, passando os campos necessários.
Recomendação do formato do CSV:
title,description Task 01,Descrição da Task 01 Task 02,Descrição da Task 02 Task 03,Descrição da Task 03 Task 04,Descrição da Task 04 Task 05,Descrição da Task 05
Semelhante ao que foi feito no stream-http-server.js, nas aulas, utilizando o for await, também é possível fazer com o parse da lib informada acima. (Lembre-se de pular a primeira linha do CSV)
Algumas sugestões do que pode ser implementado:
title e description das rotas POST e PUT estão presentes no body da requisiçã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.Use este checklist para ajudar a organizar a sua entrega