Skip to content

Commit fb4d4cf

Browse files
committed
feat: implement GET /items/{id} endpoint
- Add UUID parsing with error handling for malformed IDs - Search library using SearchCriteria with ID filter - Return 404 for non-existent items, 200 for found items - Return 400 for invalid UUID format
1 parent 74d5382 commit fb4d4cf

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lesson_23/api/java/api_app/src/main/java/com/codedifferently/lesson23/web/MediaItemsController.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import java.io.IOException;
88
import java.util.List;
99
import java.util.Set;
10+
import java.util.UUID;
1011
import org.springframework.http.ResponseEntity;
1112
import org.springframework.web.bind.annotation.CrossOrigin;
1213
import org.springframework.web.bind.annotation.GetMapping;
14+
import org.springframework.web.bind.annotation.PathVariable;
1315
import org.springframework.web.bind.annotation.RestController;
1416

1517
@RestController
@@ -31,4 +33,22 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
3133
var response = GetMediaItemsResponse.builder().items(responseItems).build();
3234
return ResponseEntity.ok(response);
3335
}
36+
37+
@GetMapping("/items/{id}")
38+
public ResponseEntity<MediaItemResponse> getItem(@PathVariable String id) {
39+
try {
40+
UUID itemId = UUID.fromString(id);
41+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(itemId.toString()).build());
42+
43+
if (items.isEmpty()) {
44+
return ResponseEntity.notFound().build();
45+
}
46+
47+
MediaItem item = items.iterator().next();
48+
MediaItemResponse response = MediaItemResponse.from(item);
49+
return ResponseEntity.ok(response);
50+
} catch (IllegalArgumentException e) {
51+
return ResponseEntity.badRequest().build();
52+
}
53+
}
3454
}

0 commit comments

Comments
 (0)