diff --git a/src/main/java/hdm/mi/growbros/controllers/PlantsController.java b/src/main/java/hdm/mi/growbros/controllers/PlantsController.java index 9c751ce26ce94ca58870ec263f953519f0f7724e..9a466c17fd4d73a0e7c8f36b0b7f8834f736649b 100644 --- a/src/main/java/hdm/mi/growbros/controllers/PlantsController.java +++ b/src/main/java/hdm/mi/growbros/controllers/PlantsController.java @@ -1,5 +1,6 @@ package hdm.mi.growbros.controllers; +import hdm.mi.growbros.exceptions.PlantNotFoundException; import hdm.mi.growbros.models.dto.CustomPageDto; import hdm.mi.growbros.models.plant.Plant; import hdm.mi.growbros.models.search.SearchRequest; @@ -12,12 +13,12 @@ import java.util.Collection; @RestController @CrossOrigin -@RequestMapping("/api/v1") +@RequestMapping("/api/v1/plants") @RequiredArgsConstructor public class PlantsController { private final PlantsService plantsService; - @GetMapping("/plants") + @GetMapping public CustomPageDto<Plant> getAllPlants( @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "pageSize", defaultValue = "25") int pageSize @@ -25,17 +26,22 @@ public class PlantsController { return plantsService.getPlants(page, pageSize); } - @GetMapping("/plants/randomPlants/{numberOfPlants}") + @GetMapping("/{id}") + public Plant getPlant(@PathVariable long id) { + return plantsService.findById(id).orElseThrow(() -> new PlantNotFoundException(id)); + } + + @GetMapping("/randomPlants/{numberOfPlants}") public Collection<Plant> getRandomPlants(@PathVariable Integer numberOfPlants) { return plantsService.getRandomPlants(numberOfPlants); } - @GetMapping("/plants/search") + @GetMapping("/search") public Collection<Plant> getPlantsSearchedFor(@RequestBody @Valid SearchRequest searchRequest) { return plantsService.getPlantsSearchedFor(searchRequest); } - @PostMapping("/plants") + @PostMapping public void createPlant(@RequestBody @Valid Plant plant) { plantsService.createPlant(plant); } diff --git a/src/main/java/hdm/mi/growbros/service/PlantsService.java b/src/main/java/hdm/mi/growbros/service/PlantsService.java index 41ac6c79fa8b33bfd4326e3d8f239a4ef64f7750..1d6c0fda032984276520e838e944438d89948761 100644 --- a/src/main/java/hdm/mi/growbros/service/PlantsService.java +++ b/src/main/java/hdm/mi/growbros/service/PlantsService.java @@ -3,8 +3,8 @@ package hdm.mi.growbros.service; import hdm.mi.growbros.models.dto.CustomPageDto; import hdm.mi.growbros.models.plant.Plant; import hdm.mi.growbros.models.search.PlantSpecification; -import hdm.mi.growbros.repositories.PlantRepository; import hdm.mi.growbros.models.search.SearchRequest; +import hdm.mi.growbros.repositories.PlantRepository; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,4 +55,8 @@ public class PlantsService { log.info("Saving plant '{}' to repository.", plant.getName()); plantRepository.save(plant); } + + public Optional<Plant> findById(long id) { + return plantRepository.findById(id); + } }