diff --git a/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java b/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java index 6a555cd..a0149bd 100644 --- a/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java +++ b/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java @@ -14,29 +14,36 @@ import io.salmonllama.fashionscapeapi.repository.OutfitRepository; import jakarta.validation.Valid; @RestController -@RequestMapping("/api/v1") +@RequestMapping("/api/v1/outfit") public class OutfitController { @Autowired private OutfitRepository outfitRepository; - @GetMapping("/outfits") + @GetMapping() public List getAllOutfits() { return outfitRepository.findAll(); } - @GetMapping("/outfits/{id}") + @GetMapping("/{id}") public ResponseEntity getOutfitById(@PathVariable(value = "id") String outfitId) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); return ResponseEntity.ok().body(outfit); } - @PostMapping("/outfits") + @GetMapping("/random") + public ResponseEntity getRandomOutfit() { + Outfit outfit = outfitRepository.findRandomOutfit(); + + return ResponseEntity.ok(outfit); + } + + @PostMapping() public Outfit createOutfit(@Valid @RequestBody Outfit outfit) { return outfitRepository.save(outfit); } - @PutMapping("/outfits/{id}") + @PutMapping("/{id}") public ResponseEntity updateOutfit(@PathVariable(value = "id") String outfitId, @Valid @RequestBody Outfit outfitDetails) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); @@ -58,7 +65,7 @@ public class OutfitController { return ResponseEntity.ok(updatedOutfit); } - @DeleteMapping("/outfits/{id}") + @DeleteMapping("/{id}") public Map deleteOutfit(@PathVariable(value = "id") String outfitId) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); diff --git a/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java b/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java index eda8ef9..d8dbfb9 100644 --- a/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java +++ b/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java @@ -1,11 +1,13 @@ package io.salmonllama.fashionscapeapi.repository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import io.salmonllama.fashionscapeapi.model.Outfit; @Repository public interface OutfitRepository extends JpaRepository { - + @Query(value = "SELECT o FROM outfit o ORDER BY random() LIMIT 1", nativeQuery = true) + public Outfit findRandomOutfit(); }