feat(CreateRecipe): implementado controlador para crear recetas básico

parent 9b394bc7
package com.example.apprecetas.recipe.infrastructure.controller;
import com.example.apprecetas.exceptions.UnvalidInputEntityException;
import com.example.apprecetas.recipe.application.CreateRecipeUseCase;
import com.example.apprecetas.recipe.infrastructure.controller.dto.RecipeInputDto;
import com.example.apprecetas.recipe.infrastructure.controller.dto.RecipeOutputDto;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.URI;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/recipe")
public class CreateRecipeController {
@Autowired
private CreateRecipeUseCase service;
@PostMapping
public ResponseEntity<RecipeOutputDto> create(@RequestBody @Valid RecipeInputDto recipeInputDto, BindingResult result) {
if(result.hasErrors()) {
String errorMsg = result.getFieldErrors().stream()
.map(fieldError -> fieldError.getField() + ": " + fieldError.getDefaultMessage())
.collect(Collectors.joining(";"));
throw new UnvalidInputEntityException(errorMsg);
}
URI location = URI.create("recipe");
return ResponseEntity.created(location).body(service.create(recipeInputDto));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment