API para desafio de marcação de ponto
- Maven
- Java 8
- Spring Boot
- Spring Data
- jUnit4
- Mock
- H2
git clone https://github.com/jorgeelucas/ponto-api.git
cd ponto-apiPara construir o projeto com o Maven, executar os comando abaixo:
mvn clean installO comando irá baixar todas as dependências do projeto e criar um diretório target com os artefatos construídos, que incluem o arquivo jar do projeto. Além disso, serão executados os testes unitários, e se algum falhar, o Maven exibirá essa informação no console.
Para executar o projeto com o Maven Spring Boot Plugin, executar os comando abaixo:
mvn spring-boot:runO comando irá rodar o projeto e subir na porta 8080
mvn testTodas as requisições estão documentadas no swagger
Qualquer registro de ponto possui o tipo do registro (ENTRADA, INTERVALO_IDA, INTERVALO_VOLTA, SAIDA) para simplificar os testes pois as batidas de ponto não usaram o horário automático. Caso informe um tipo diferente desses gerará um erro inesperado.
Payload (Clique aqui)
-
Cadastrar um novo registro: [POST]
{ "data": "string", "hora": "string", "matriculaFuncionario":"string", "tipoRegistro": "string" } -
Alterar registro por id: [PUT]
{ "hora": "string", "tipoRegistro": "string", }
Rotas (Clique aqui)
Utiliza-se o estilo RESTFull portanto todos os caminhos partem do path: /api/v1/registros
- [GET]
Parametro = matricula:stringObtem todos os registros do funcionário por matricula. - [POST]
{ "data": "string", "hora": "string", "matriculaFuncionario":"string", "tipoRegistro": "string" }Cadastra um novo registro - /relatorio [GET]
Parametro = matricula:string Parametro = mes:stringGera um relatório do funcionario no mes pela matricula e mês (janeiro, fevereiro...) - /id [DELETE]
A variavel ID se refere ao ID do registro a ser deletadoDeleta um registro da base pelo id - /id [GET]
A variavel ID se refere ao ID do registro a ser detalhadoDetalha um registro da base pelo id - /id [PUT]
{ "hora": "string", "tipoRegistro": "string", }Altera um registro na base pelo id, mudando o tipo para a hora informada
-
Para comunicação foi usado a arquitetura REST, baseado no Restful. Os serviços recebem e respondem JSON
-
Na arquitetura foi usado a abordagem Package by Layer do Clean Arch (controllers, services, repositories)
-
Para banco de dados foi usado banco em memória h2, tanto para o projeto quanto para os testes.
-
Na documentação foi pensado no swagger por ser uma ferramenta de facil implementação e usabilidade.
-
Para testes foi usado Junit4, fazendo testes diretamente nos endpoints, testes de integração, para tentar simular mais uma chamada e as respostas mockados.
-
Nas responstas foi escolhido o objeto ResponseEntity do spring para gerenciar todo o objeto da resposta.
-
Para testes eu estava usando o POSTMAN com os endpoints informados acima.
Obrigado pela oportunidade :)