Faaala Dev,
Sejam todos muito bem-vindos ao primeiro desafio da trilha de Java do Ignite.
Nesse desafio você reforçará de forma prática os conceitos que aprendemos nesse módulo.
Como se trata de um desafio, ele necessita de alguns conhecimentos além dos abordados nesse módulo, então é importante ter autonomia para conseguir pesquisar essas coisas caso não saiba como resolver. Por isso, lembre-se, tenha calma e acredite no seu processo.
O aprendizado daqui é muito importante e com certeza você conseguirá sair com muito conhecimento bacana 💜
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.
💡 Dica:
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 👋