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 - /cursosDeve ser possível criar um curso no banco de dados, enviando os campos
nameecategorypor meio dobodyda requisição.Ao criar um curso, os campos:
id,created_ateupdated_atdevem ser preenchidos automaticamente, conforme a orientação das propriedades acima. -
GET - /cursosDeve 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
nameecategory -
PUT - /cursos/:idDeve ser possível atualizar um curso pelo
id.No
bodyda requisição, deve receber somente onamee/oucategorypara serem atualizados.Se for enviado somente o
name, significa que ocategorynão pode ser atualizado e vice-versa. Além dissoactivefor informado nessa rota, ele deverá ser ignorado, pois a rota que deverá fazer essa atualização, é a de patch. -
DELETE - /cursos/:idDeve ser possível remover um curso pelo
id. -
PATCH - /cursos/:id/activeEssa 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
nameecategorydas rotasPOSTePUTestão presentes nobodyda 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 👋