O Breakfast é um projeto que tem o propósito de auxiliar na organização de um café da manhã em grupo com os colaboradores da empresa em que você trabalha.
-
Neste repositório está contido apenas o Back End deste projeto, uma REST API com as operações básicas de um CRUD.
-
Você pode encontrar o repositório do Front End acessando Breakfast-web
-
Esta API Está hospedada no Heroku. Portanto, você pode acessar seus end points a partir do seguinte endereço: https://breakfast-api.herokuapp.com
- Cadastro de Colaboradores
- Nome do colaborador
- CPF do colaborador
- Cadastro de itens para o café da manhã
- Nome do item. Ex.: Pão, Bolo, etc.
- Utilizar NativeQuery para inserção, atualização, consulta e exclusão.
- Não pode repetir cpf.
- Não pode repetir opção de café da manhã mesmo que seja outro colabor
- Java 11
- PostgresSQL
- Spring Boot
- Spring Data JPA
- Spring Boot Dev Tools
- Flyway
- Beans Validation
- Model Mapper
- Spring Security
- Apache Maven
Obs.: Deixei apenas o link do site oficial de cada ferramenta para que você possa seguir o passo a passo de instalação em seu sistema operacional
-
IDE (Escolha uma das seguintes opções)
1.1 Com o Git instalado, Abra o terminal em uma diretório de sua escolha e execute o seguinte comando:
git clone https://github.com/MarcosWinicios/breakfast-api.git
2.1 Abrir a IDE escolhida
2.2 Importar o projeto selecionando o diretório onde clonou este repositório
2.3 Esperar o Maven instalar as dependências descritas no pom.xml
2.4 Banco de dados
- Abra o PgAdmin
- Crie um servidor local
- Crie um banco de dados com o nome breakfast
2.5 Configurando acesso ao banco de dados no projeto
- Edite o arquivo application.properties
dentro de src/main/resources
inserindo os suas configurações de conexão com o banco.
Exemplo:
spring.datasource.url=jdbc:postgresql://localhost:5432/breakfast?serverTimezone=UTC
spring.datasource.username=postgres
spring.datasource.password=123456
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
spring.jpa.hibernate.ddl-auto=update
2.5 Inicialize o projeto
- Com o banco de dados criado o Flyway criará todas as tabelas automaticamente utilizando as migrations
- Com o projeto em execução abra o
Postman
- Acesse os end points do projeto pelo endereço:
http:localhost:8080
- Listar todos os colaboradores
GET /employees
- Bucar colaborador por id
GET /employees/{id}
Parameter | Type | Description |
---|---|---|
id |
number |
Id do colaborador a ser buscado |
- Bucar colaboradores por nome
GET /employees/name/{name}
Parameter | Type | Description |
---|---|---|
name |
string |
Nome do colaborador a ser buscado |
- Bucar colaborador por cpf
GET /employees/cpf/{cpf}
Parameter | Type | Description |
---|---|---|
cpf |
string |
CPF do colaborador a ser buscado |
- Listar apenas os itens de um colaborador
GET /employees/{id}/items
Parameter | Type | Description |
---|---|---|
id |
number |
id do colaborador |
- Cadastrar colaborador
POST /employees
{
"name": "Fulano" ,
"cpf": "123456789012"
}
Parameter | Type | Description |
---|---|---|
id |
number |
id do colaborador a ser atualizado |
- Atualizar colaborador
PUT /employees/{id}
{
"name": "Fulano" ,
"cpf": "123456789012"
}
- Deletar colaborador
DELETE /employees/{id}
Parameter | Type | Description |
---|---|---|
id |
number |
id do colaborador a ser deletado |
- Listar todos os itens
GET /items/
- Buscar item por id
GET /items/{id}
Parameter | Type | Description |
---|---|---|
id |
number |
id do item |
- Buscar item por nome
GET /items/{name}
Parameter | Type | Description |
---|---|---|
name |
string |
Nome do item |
- Cadastrar item
POST /items
{
"employee":{
"id": 3
},
"itemName": "Bolo De Chocolate"
}
- Atualizar item
PUT /items/{id}
{
"employee":{
"id": 3
},
"itemName": "Bolo De Chocolate"
}
Parameter | Type | Description |
---|---|---|
id |
string |
id do item a ser atualizado |
- Deletar item
DELETE /items/{id}
Parameter | Type | Description |
---|---|---|
id |
number |
id do item a ser deletado |
- Você pode utilizar os seguintes scripts para inserir dados no banco de de dados
INSERT INTO tb_employee (name, cpf) VALUES('Marcos Winicios', '11111111111');
INSERT INTO tb_employee (name, cpf) VALUES('Joao Alves', '22222222222');
INSERT INTO tb_employee (name, cpf) VALUES('Bill Gates', '33333333333');
INSERT INTO tb_employee (name, cpf) VALUES('Steve Jobs', '44444444444');
INSERT INTO tb_employee (name, cpf) VALUES('Linus Turvalds', '55555555555');
INSERT INTO tb_employee (name, cpf) VALUES('Linus Turvalds', '66666666666');
INSERT INTO tb_item (name, employee_id) VALUES ('Pão de queijo', 1);
INSERT INTO tb_item (name, employee_id) VALUES ('Café', 1);
INSERT INTO tb_item (name, employee_id) VALUES ('Bolo de cenoura', 2);
INSERT INTO tb_item (name, employee_id) VALUES ('Leite', 4);
INSERT INTO tb_item (name, employee_id) VALUES ('Pão Francês', 2);
INSERT INTO tb_item (name, employee_id) VALUES ('Achocolatado', 2);