Skip to content

Commit

Permalink
feat: VIN-422 - criando PairingService
Browse files Browse the repository at this point in the history
  • Loading branch information
vanderleik committed Apr 18, 2024
1 parent c50a8bd commit 1d47d90
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.vinhonotas.harmonizacao.application.services;

import com.vinhonotas.harmonizacao.interfaces.dtos.inputs.WineInputDTO;
import com.vinhonotas.harmonizacao.interfaces.dtos.outputs.PairingResponseDTO;

public interface PairingService {

PairingResponseDTO getWineInformation(WineInputDTO wine);
PairingResponseDTO getWinePairing(WineInputDTO wine);
PairingResponseDTO getMenuPairing(WineInputDTO wine);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.vinhonotas.harmonizacao.application.services.impl;

import com.vinhonotas.harmonizacao.application.services.PairingService;
import com.vinhonotas.harmonizacao.interfaces.dtos.inputs.WineInputDTO;
import com.vinhonotas.harmonizacao.interfaces.dtos.outputs.PairingResponseDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
@Slf4j
public class PairingServiceImpl implements PairingService {

private final OpenAiChatClient openAiChatClient;

@Override
public PairingResponseDTO getWineInformation(WineInputDTO wine) {
PromptTemplate promptTemplate = new PromptTemplate("Quais as características do vinho {wine}?");
log.info("getWineInformation :: Buscando informações sobre o vinho: {}", wine);
promptTemplate.add("wine", wine);
String result = openAiChatClient.call(promptTemplate.create()).getResult().getOutput().getContent();
log.info("getWineInformation :: Informações encontradas: {}", result);
return new PairingResponseDTO(result);
}

@Override
public PairingResponseDTO getWinePairing(WineInputDTO wine) {
PromptTemplate promptTemplate = new PromptTemplate("Quais os pratos que combinam com o vinho {wine}?");
log.info("getWinePairing :: Buscando harmonizações para o vinho: {}", wine);
promptTemplate.add("wine", wine);

String result = openAiChatClient.call(promptTemplate.create()).getResult().getOutput().getContent();
log.info("getWinePairing :: Harmonizações encontradas: {}", result);
return new PairingResponseDTO(result);
}

@Override
public PairingResponseDTO getMenuPairing(WineInputDTO wine) {
PromptTemplate promptTemplate = new PromptTemplate("Crie um menu com entrada, prato principal e sobremesa que harmonize com o vinho {wine}?");
log.info("getMenuPairing :: Buscando menu harmonizado para o vinho: {}", wine);
promptTemplate.add("wine", wine);
String result = openAiChatClient.call(promptTemplate.create()).getResult().getOutput().getContent();
log.info("getMenuPairing :: Menu harmonizado: {}", result);
return new PairingResponseDTO(result);
}

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.vinhonotas.harmonizacao.interfaces.controllers;

import com.vinhonotas.harmonizacao.application.services.PairingService;
import com.vinhonotas.harmonizacao.interfaces.dtos.inputs.WineInputDTO;
import com.vinhonotas.harmonizacao.interfaces.dtos.outputs.PairingResponseDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
Expand All @@ -15,15 +17,24 @@
@Slf4j
public class PairingController {

private final OpenAiChatClient openAiChatClient;
private final PairingService pairingService;

@GetMapping("/information")
public String getWineInformation(@RequestParam(value = "wine") String wine) {
PromptTemplate promptTemplate = new PromptTemplate("Quais as características do vinho {wine}?");
log.info("getWineInformation :: Buscando informações sobre o vinho: {}", wine);
promptTemplate.add("wine", wine);
String result = openAiChatClient.call(promptTemplate.create()).getResult().getOutput().getContent();
log.info("getWineInformation :: Informações encontradas: {}", result);
return result;
public ResponseEntity<PairingResponseDTO> getWineInformation(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO wineInformation = pairingService.getWineInformation(wine);
return ResponseEntity.ok(wineInformation);
}

@GetMapping("/pairings")
public ResponseEntity<PairingResponseDTO> getWinePairing(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO winePairing = pairingService.getWinePairing(wine);
return ResponseEntity.ok(winePairing);
}

@GetMapping("/menu")
public PairingResponseDTO getMenuPairing(@RequestParam(value = "wine") WineInputDTO wine) {
PairingResponseDTO menuPairing = pairingService.getMenuPairing(wine);
return menuPairing;
}

}

0 comments on commit 1d47d90

Please sign in to comment.