Skip to content

Commit ae9d210

Browse files
committed
feat: fix addItem issue in the controller class
1 parent 35cbab1 commit ae9d210

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.codedifferently.lesson26.library.Library;
55
import com.codedifferently.lesson26.library.MediaItem;
66
import com.codedifferently.lesson26.library.search.SearchCriteria;
7+
import jakarta.validation.Valid;
78
import java.io.IOException;
89
import java.util.List;
910
import java.util.Set;
@@ -38,20 +39,16 @@ public GetMediaItemsResponse getItems() {
3839
}
3940

4041
@GetMapping("/items/{id}")
41-
public ResponseEntity<String> getItem(@PathVariable UUID id) {
42-
Set<MediaItem> items = library.search(SearchCriteria.builder().build());
42+
public ResponseEntity<MediaItemResponse> getItem(@PathVariable UUID id) {
43+
String enteredId = id.toString();
44+
Set<MediaItem> items = library.search(SearchCriteria.builder().id(enteredId).build());
4345

44-
List<MediaItemResponse> responseItem =
45-
items.stream()
46-
.map(MediaItemResponse::from) // Transform the original objects
47-
.filter(item -> item.getId().equals(id))
48-
.toList();
49-
if (responseItem.size() == 0) {
46+
if (items.isEmpty()) {
5047
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
5148
}
52-
if (responseItem.size() >= 1)
53-
return ResponseEntity.status(HttpStatus.OK).body("media item found");
54-
else return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
49+
MediaItem item = items.iterator().next();
50+
MediaItemResponse response = MediaItemResponse.from(item);
51+
return ResponseEntity.ok(response);
5552
}
5653

5754
@DeleteMapping("/items/{id}")
@@ -65,26 +62,19 @@ public ResponseEntity<Void> deleteItem(@PathVariable UUID id) {
6562
if (itemToDelete.isEmpty()) {
6663
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
6764
}
68-
69-
if (!itemToDelete.isEmpty()) {
70-
library.removeMediaItem(id, librarian);
71-
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
72-
}
73-
65+
library.removeMediaItem(id, librarian);
7466
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
7567
}
7668

7769
@PostMapping("/items")
78-
public ResponseEntity<?> addsItem(@RequestBody CreateMediaItemRequest mediaItemRequest) {
79-
if (null == mediaItemRequest.getItem() || null == mediaItemRequest) {
80-
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
81-
}
82-
MediaItem mediaItem = MediaItemRequest.asMediaItem(mediaItemRequest.getItem());
83-
if (null == mediaItem || null == mediaItem.getTitle()) {
84-
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
85-
}
70+
public CreateMediaItemResponse addsItem(
71+
@Valid @RequestBody CreateMediaItemRequest mediaItemRequest) {
8672

73+
MediaItem mediaItem = MediaItemRequest.asMediaItem(mediaItemRequest.getItem());
8774
library.addMediaItem(mediaItem, librarian);
88-
return ResponseEntity.status(HttpStatus.OK).body(mediaItemRequest);
75+
var response =
76+
CreateMediaItemResponse.builder().item(getItem(mediaItem.getId()).getBody()).build();
77+
78+
return response;
8979
}
9080
}

0 commit comments

Comments
 (0)