Add custom query for random outfits

This commit is contained in:
Alex Gryczewski 2023-09-12 11:15:43 -04:00
parent b74bdad322
commit 4a9ccfd25e
2 changed files with 16 additions and 7 deletions

View File

@ -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<Outfit> getAllOutfits() {
return outfitRepository.findAll();
}
@GetMapping("/outfits/{id}")
@GetMapping("/{id}")
public ResponseEntity<Outfit> 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<Outfit> 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<Outfit> 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<String, Boolean> deleteOutfit(@PathVariable(value = "id") String outfitId) throws ResourceNotFoundException {
Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId));

View File

@ -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<Outfit, String> {
@Query(value = "SELECT o FROM outfit o ORDER BY random() LIMIT 1", nativeQuery = true)
public Outfit findRandomOutfit();
}