O propósito desse teste e avaliar a arquitetura do projeto do qual você ira montar.. o que você vai priorizar e como será feito. Para esse desafio, você deverá realizar a modelagem abaixo, sinta-se a vontade para fazer em qual banco você quiser. Lembre-se, caso você tenha uma solução melhor sinta-se a vontade para implementar. Só não mude completamente o modelo relacional.
Ao final do projeto, o código deve ser disponibilizado no git hub. Vale ressaltar que é muito importante seu commit está bem separado de acordo com cada funcionalidade, pois isso facilita na hora da correção. Os script construídos da tabela deverá estar junto com o projeto.
Vale ressaltar, que você deve se preocupar com as boas práticas, retornar uma DTO ter o seu código bem acoplado, cada classe com sua responsabilidade... explore bastante boas práticas no java. Abaixo estarei listando alguns tópicos interessante:
- 🤔 O que é uma DTO?
- 🤔 Autenticação JWT
- 🤔 Implementando Swagger
- 🤔 SQL Server - Tipos de Dados Java
- 🤔 SQL Server - Aprendendo a criar tabelas
Na primeira parte desse desafio, o objetivo vai ser de criar a estrutura do projeto, e fazer os CRUD (Create, Post, Update e Delete) do Controller.
- O versionamento do nosso código é algo muito importante, para cada tarefa que está sendo solicitada for concluída, faça um commit para o seu repositório.
Quando usamos DTOs, queremos aproveitar para validar que os dados enviados para nossa API sejam válidos. Para isso, podemos usar anotações que podem avaliar o formato nos quais os campos foram preenchidos.
Seguem algumas referências a respeito:
- Atualize as anotações necessárias para validar o formato dos campos de
CPF
,EMAIL
eNOME
do DTO de requisição (UserForm).
Queremos que nossa API sejam fácil de uso e clara no seu funcionamento para quem for consumir ela. Para isso, é importante garantir que os erros esperados e/ou inesperados sejam tratados de forma amigáveis. Uma boa prática é usar Exception Handlers para isso.
Seguem algumas referências:
- Crie uma classe de
Exception Handler
para retornarmensagens
ehttp status
amigáveis caso erros esperados ou inesperados ocorram no uso da sua API.
- Criar projeto webservice rest com spring boot;
- Disponibilizar swagger da aplicação;
- Criar crud de funcionário e cargo;
- Consulta de funcionários de um departamento;
- Manter histórico dos departamentos que o usuário trabalhou;
- Definir Chefe do departamento;
- Implementar documentação Swagger;
- Implementar autenticação com Token;
- Buscar um funcionário pelo CPF e o nome;
- Tratamento de exceções.
Abaixo foi montado as tabelas necessárias para o seu desenvolvimento. Deve ser seguido os mesmos tipos, chaves e nomes de coluna que estão descritos na tabela.
TB_CARGO
COLUNA | TIPO | CHAVE |
---|---|---|
id | INT | PK |
cargo | VARCHAR (30) | NOT NULL |
TB_FUNCIONARIO
COLUNA | TIPO | CHAVE |
---|---|---|
id | INT | PK |
nome | VARCHAR (40) | NOT NULL |
idade | INT | NOT NULL |
data_nascimento | DATE | NOT NULL |
documento | VARCHAR (50) | NOT NULL |
cpf | VARCHAR (50) | NOT NULL |
cargo_id | INT | FK |
TB_FUNCIONARIO_DEPARTAMENTO
COLUNA | TIPO | CHAVE |
---|---|---|
id_departamento | INT | FK |
id_funcionario | INT | FK |
TB_DEPARTAMENTO
COLUNA | TIPO | CHAVE |
---|---|---|
id | INT | FK |
nome | VARCHAR (50) | NOT NULL |