44import com .codedifferently .lesson26 .library .Library ;
55import com .codedifferently .lesson26 .library .MediaItem ;
66import com .codedifferently .lesson26 .library .search .SearchCriteria ;
7+ import jakarta .validation .Valid ;
78import java .io .IOException ;
89import java .util .List ;
910import 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