4
4
import com .codedifferently .lesson26 .library .Library ;
5
5
import com .codedifferently .lesson26 .library .MediaItem ;
6
6
import com .codedifferently .lesson26 .library .search .SearchCriteria ;
7
+ import jakarta .validation .Valid ;
7
8
import java .io .IOException ;
8
9
import java .util .List ;
9
10
import java .util .Set ;
@@ -38,20 +39,16 @@ public GetMediaItemsResponse getItems() {
38
39
}
39
40
40
41
@ 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 ());
43
45
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 ()) {
50
47
return ResponseEntity .status (HttpStatus .NOT_FOUND ).build ();
51
48
}
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 );
55
52
}
56
53
57
54
@ DeleteMapping ("/items/{id}" )
@@ -65,26 +62,19 @@ public ResponseEntity<Void> deleteItem(@PathVariable UUID id) {
65
62
if (itemToDelete .isEmpty ()) {
66
63
return ResponseEntity .status (HttpStatus .NOT_FOUND ).build ();
67
64
}
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 );
74
66
return ResponseEntity .status (HttpStatus .NO_CONTENT ).build ();
75
67
}
76
68
77
69
@ 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 ) {
86
72
73
+ MediaItem mediaItem = MediaItemRequest .asMediaItem (mediaItemRequest .getItem ());
87
74
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 ;
89
79
}
90
80
}
0 commit comments