Skip to content

Commit

Permalink
Merge pull request #421 from vinho-notas/VIN-484-Adicionar-Swagger-na…
Browse files Browse the repository at this point in the history
…-API-de-harmonizacao

feat: VIN-484 - adicionando Swagger na API de harmonização
  • Loading branch information
vanderleik authored May 13, 2024
2 parents 04ea2d5 + c570b89 commit 66ddd8a
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 1 deletion.
36 changes: 36 additions & 0 deletions harmonizacao/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Harmonização de Vinhos

Este é um projeto Java Spring Boot que fornece uma API REST para harmonização de vinhos. A API permite que os usuários obtenham informações sobre vinhos, obtenham sugestões de harmonização de vinhos e obtenham sugestões de harmonização de vinhos com o menu.
Para executar esse serviço é utilizado o Spring AI, que é uma biblioteca Java para interagir com a API OpenAI.

## Tecnologias Utilizadas

- Java
- Spring Boot
- Spring AI
- Maven

## Configuração

Para configurar o projeto, você precisa ter o Java e o Maven instalados. Em seguida, você pode clonar o repositório e executar `mvn install` para instalar as dependências necessárias.

## Uso

Você pode iniciar o aplicativo executando `mvn spring-boot:run`. O serviço estará disponível em `http://localhost:8085/swagger-ui/index.html`.

## Endpoints

### Pairing: Operações relacionadas a harmonização de vinhos

GET
- `/api/v1/pairing/pairings`: Retorna a harmonização do vinho

GET
- `/api/v1/pairing/menu`: Retorna a harmonização do vinho com o menu

GET
- `/api/v1/pairing/information`: Retorna informações sobre o vinho

## Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo `LICENSE.md` para detalhes
10 changes: 10 additions & 0 deletions harmonizacao/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.vinhonotas.harmonizacao.configuration;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfiguration {

@Bean
public OpenAPI openApiInformation() {
Server localServer = new Server()
.url("http://localhost:8085")
.description("Localhost Server URL");
Contact contact = new Contact()
.email("vanderlei.master@gmail.com")
.name("Vanderlei Kleinschmidt");
Info info = new Info()
.contact(contact)
.description("Api de harmonização de vinhos")
.title("Harmonização de Vinhos")
.version("V0.0.1")
.license(new License()
.name("Apache 2.0")
.url("http://springdoc.org"));
return new OpenAPI()
.info(info)
.addServersItem(localServer);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import com.vinhonotas.harmonizacao.application.services.PairingService;
import com.vinhonotas.harmonizacao.interfaces.dtos.inputs.WineInputDTO;
import com.vinhonotas.harmonizacao.interfaces.dtos.outputs.PairingResponseDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
Expand All @@ -15,22 +17,26 @@
@RequestMapping("/api/v1/pairing")
@RequiredArgsConstructor
@Slf4j
@Tag(name = "Pairing", description = "Operações relacionadas a harmonização de vinhos")
public class PairingController {

private final PairingService pairingService;

@Operation(summary = "Retorna informações sobre o vinho")
@GetMapping("/information")
public ResponseEntity<PairingResponseDTO> getWineInformation(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO wineInformation = pairingService.getWineInformation(wine);
return ResponseEntity.ok(wineInformation);
}

@Operation(summary = "Retorna a harmonização do vinho")
@GetMapping("/pairings")
public ResponseEntity<PairingResponseDTO> getWinePairing(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO winePairing = pairingService.getWinePairing(wine);
return ResponseEntity.ok(winePairing);
}

@Operation(summary = "Retorna a harmonização do vinho com o menu")
@GetMapping("/menu")
public ResponseEntity<PairingResponseDTO> getMenuPairing(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO menuPairing = pairingService.getMenuPairing(wine);
Expand Down
3 changes: 2 additions & 1 deletion harmonizacao/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ spring.config.import=optional:file:.env[.properties]
spring.application.name=harmonizacao
spring.ai.openai.api-key=${OPENAI_API_KEY}
spring.ai.openai.chat.options.model=gpt-3.5-turbo
server.port=8085
server.port=8085
springdoc.api-docs.path=/api-docs

0 comments on commit 66ddd8a

Please sign in to comment.