From 5c0a24e08ffa7928684e567c2709e29eb11e871b Mon Sep 17 00:00:00 2001 From: Salmonllama Date: Sun, 3 Dec 2023 08:12:29 -0500 Subject: [PATCH] feat: Use UUIDs in Outfit Reworked the outfit model, repository, and controller to use UUIDs instead of String IDs. Closes FS-29 --- .../fashionscapeapi/controller/OutfitController.java | 7 ++++--- .../java/io/salmonllama/fashionscapeapi/model/Outfit.java | 8 +++++--- .../fashionscapeapi/repository/OutfitRepository.java | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java b/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java index f676210..dc5e37d 100644 --- a/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java +++ b/src/main/java/io/salmonllama/fashionscapeapi/controller/OutfitController.java @@ -3,6 +3,7 @@ package io.salmonllama.fashionscapeapi.controller; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -27,7 +28,7 @@ public class OutfitController { } @GetMapping("/{id}") - public ResponseEntity getOutfitById(@PathVariable(value = "id") String outfitId) throws ResourceNotFoundException { + public ResponseEntity getOutfitById(@PathVariable(value = "id") UUID outfitId) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); return ResponseEntity.ok().body(outfit); @@ -48,7 +49,7 @@ public class OutfitController { } @PutMapping("/{id}") - public ResponseEntity updateOutfit(@PathVariable(value = "id") String outfitId, @Valid @RequestBody Outfit outfitDetails) throws ResourceNotFoundException { + public ResponseEntity updateOutfit(@PathVariable(value = "id") UUID outfitId, @Valid @RequestBody Outfit outfitDetails) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); outfit @@ -70,7 +71,7 @@ public class OutfitController { } @DeleteMapping("/{id}") - public ResponseEntity> deleteOutfit(@PathVariable(value = "id") String outfitId) throws ResourceNotFoundException { + public ResponseEntity> deleteOutfit(@PathVariable(value = "id") UUID outfitId) throws ResourceNotFoundException { Outfit outfit = outfitRepository.findById(outfitId).orElseThrow(() -> new ResourceNotFoundException("Outfit not found for id :: " + outfitId)); outfitRepository.delete(outfit); diff --git a/src/main/java/io/salmonllama/fashionscapeapi/model/Outfit.java b/src/main/java/io/salmonllama/fashionscapeapi/model/Outfit.java index b764897..c60dcce 100644 --- a/src/main/java/io/salmonllama/fashionscapeapi/model/Outfit.java +++ b/src/main/java/io/salmonllama/fashionscapeapi/model/Outfit.java @@ -1,13 +1,14 @@ package io.salmonllama.fashionscapeapi.model; import java.sql.Timestamp; +import java.util.UUID; import jakarta.persistence.*; @Entity @Table(name = "outfit") public class Outfit { - private String id; + private UUID id; private String link; private String submitter; private String tag; @@ -25,11 +26,12 @@ public class Outfit { } @Id + @GeneratedValue @Column(name = "id", nullable = false, unique = true) - public String getId() { + public UUID getId() { return id; } - public Outfit setId(String id) { + public Outfit setId(UUID id) { this.id = id; return this; } diff --git a/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java b/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java index ca72995..26109b5 100644 --- a/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java +++ b/src/main/java/io/salmonllama/fashionscapeapi/repository/OutfitRepository.java @@ -7,9 +7,10 @@ import org.springframework.stereotype.Repository; import io.salmonllama.fashionscapeapi.model.Outfit; import java.util.List; +import java.util.UUID; @Repository -public interface OutfitRepository extends JpaRepository { +public interface OutfitRepository extends JpaRepository { @Query(value = "SELECT o FROM outfit o ORDER BY random() LIMIT 1", nativeQuery = true) Outfit findRandomOutfit();