Nesse desafio você desenvolverá uma API fictícia para uma empresa de cursos de programação, onde em um primeiro momento, você deverá utilizar o CRUD, para criação de cursos.
A API deve conter as seguintes funcionalidades:
- Criação de um novo curso
- Listagem de todos os cursos
- Atualização de um curso pelo
id
- Remover um curso pelo
id
Antes das rotas, vamos entender qual a estrutura (propriedades) que uma task deve ter:
id
- Identificador único de cada cursoname
- Nome do cursocategory
- Categoria do cursoActive
- Define se o curso está ativo ou nãocreated_at
- Data de quando o curso foi criado.updated_at
- Deve ser sempre alterado para a data de quando o curso for atualizada.
Rotas:
-
POST - /cursos
Deve ser possível criar um curso no banco de dados, enviando os campos
name
ecategory
por meio dobody
da requisição.Ao criar um curso, os campos:
id
,created_at
eupdated_at
devem ser preenchidos automaticamente, conforme a orientação das propriedades acima. -
GET - /cursos
Deve ser possível listar todas os cursos salvos no banco de dados.
Também deve ser possível realizar uma busca, filtrando os cursos pelo
name
ecategory
-
PUT - /cursos/:id
Deve ser possível atualizar um curso pelo
id
.No
body
da requisição, deve receber somente oname
e/oucategory
para serem atualizados.Se for enviado somente o
name
, significa que ocategory
não pode ser atualizado e vice-versa. Além dissoactive
for informado nessa rota, ele deverá ser ignorado, pois a rota que deverá fazer essa atualização, é a de patch. -
DELETE - /cursos/:id
Deve ser possível remover um curso pelo
id
. -
PATCH - /cursos/:id/active
Essa rota servirá para marcar se o curso está ativo ou não, ou seja, um toggle entre true or false.
A anotação @CreationTimestamp
define que o valor do atributo createdAt
será definido automaticamente pelo banco de dados no momento da criação da entidade. A anotação @UpdateTimestamp
define que o valor do atributo updatedAt
será definido automaticamente pelo banco de dados no momento da atualização da entidade.
Algumas sugestões do que pode ser implementado:
- Validar se as propriedades
name
ecategory
das rotasPOST
ePUT
estão presentes nobody
da requisição. - Para a parte de definição se o curso está ativo ou não, você pode definir um ENUM(enumerador) para fazer esse ‘’check’’. Sugestão de leitura: clique aqui.
- Para tratar as exceções, você pode se desafiar e criar as excpetion 😃
Após concluir o desafio, você deve enviar a URL do seu código no GitHub para a plataforma.
Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!
Feito com 💜 por Rocketseat 👋