/conceitos-nodejs

Projeto realizado durante a trilha de Backend na Rocketseat.

Primary LanguageJavaScript

šŸ’» Sobre o desafio

Nesse desafio durante o curso da Rocketseat, fui capaz de criar uma aplicaĆ§Ć£o para treinar o que aprendi sobre os conceitos do Node.js!

Para rodar, basta clonar e realizar "npm install". Para rodas os testes realizar "npm run test"

Os testes foram criados pelo curso! Apenas realizei o crud.

Essa serĆ” uma aplicaĆ§Ć£o para gerenciar tarefas (em inglĆŖs todos). SerĆ” permitida a criaĆ§Ć£o de um usuĆ”rio com name e username, bem como fazer o CRUD de todos:

  • Criar um novo todo;
  • Listar todos os todos;
  • Alterar o title e deadline de um todo existente;
  • Marcar um todo como feito;
  • Excluir um todo;

Tudo isso para cada usuĆ”rio em especĆ­fico (o username serĆ” passado pelo header). A seguir veremos com mais detalhes o que e como precisa ser feito šŸš€

POST /users

A rota deve receber name, e username dentro do corpo da requisiĆ§Ć£o. Ao cadastrar um novo usuĆ”rio, ele deve ser armazenado dentro de um objeto no seguinte formato:

{ 
	id: 'uuid', // precisa ser um uuid
	name: 'Danilo Vieira', 
	username: 'danilo', 
	todos: []
}

Certifique-se que o ID seja um UUID, e de sempre iniciar a lista todos como um array vazio. O objeto do usuĆ”rio deve ser retornado na resposta da requisiĆ§Ć£o.

GET /todos

A rota deve receber, pelo header da requisiĆ§Ć£o, uma propriedade username contendo o username do usuĆ”rio e retornar uma lista com todas as tarefas desse usuĆ”rio.

POST /todos

A rota deve receber title e deadline dentro do corpo da requisiĆ§Ć£o e, uma propriedade username contendo o username do usuĆ”rio dentro do header da requisiĆ§Ć£o. Ao criar um novo todo, ele deve ser armazenada dentro da lista todos do usuĆ”rio que estĆ” criando essa tarefa. Cada tarefa deverĆ” estar no seguinte formato: . Certifique-se que o ID seja um UUID.

{ 
	id: 'uuid', // precisa ser um uuid
	title: 'Nome da tarefa',
	done: false, 
	deadline: '2021-02-27T00:00:00.000Z', 
	created_at: '2021-02-22T00:00:00.000Z'
}

ObservaĆ§Ć£o: Lembre-se de iniciar a propriedade done sempre como false ao criar um todo.

Dica: Ao fazer a requisiĆ§Ć£o com o Insomnia ou Postman, preencha a data de deadline com o formato ANO-MƊS-DIA e ao salvar a tarefa pela rota, faƧa da seguinte forma:

{ 
	id: 'uuid', // precisa ser um uuid
	title: 'Nome da tarefa',
	done: false, 
	deadline: new Date(deadline), 
	created_at: new Date()
}

Usar new Date(deadline) irĆ” realizar a transformaĆ§Ć£o da string "ANO-MƊS-DIA" (por exemplo "2021-02-25") para uma data vĆ”lida do JavaScript. O objeto do todo deve ser retornado na resposta da requisiĆ§Ć£o.

PUT /todos/:id

A rota deve receber, pelo header da requisiĆ§Ć£o, uma propriedade username contendo o username do usuĆ”rio e receber as propriedades title e deadline dentro do corpo. Ɖ preciso alterar apenas o title e o deadline da tarefa que possua o id igual ao id presente nos parĆ¢metros da rota.

PATCH /todos/:id/done

A rota deve receber, pelo header da requisiĆ§Ć£o, uma propriedade username contendo o username do usuĆ”rio e alterar a propriedade done para true no todo que possuir um id igual ao id presente nos parĆ¢metros da rota.

DELETE /todos/:id

A rota deve receber, pelo header da requisiĆ§Ć£o, uma propriedade username contendo o username do usuĆ”rio e excluir o todo que possuir um id igual ao id presente nos parĆ¢metros da rota.